1

英数字のユーザー入力を検証するための次のコードがあります

if (!preg_match("/^[A-Za-z][A-Za-z0-9.]*(?:_[A-Za-z0-9]+)*$/", $username)){
echo "invalid username";
}

入力に ​​(AZ) (0-9) 英数字以外の文字があるかどうかをチェックします。さらに、(_) アンダースコアも受け入れることができますが、文字列の間に としてのみ配置する必要がありますが、またはmy_nameは受け入れません。_mynamemyname_

私の質問は、たとえば (my.name) または (myn.ame) などを受け入れるが (.myname) (myname.) を受け入れないように、アンダースコアで制約されるのと同じように、上記のコードにドット (.) 文字を追加するにはどうすればよいかということです。

4

1 に答える 1

2

このパターンはあなたのために働くべきだと思います

$string = 'my_nam.e';
$pattern = '/^[a-z]+([a-z0-9._]*)?[a-z0-9]+$/i';
if ( ! preg_match($pattern, $string))
{
    echo 'invalid';
}
于 2013-06-16T07:06:22.560 に答える