質問
Yahooのユーザー名ルールに一致する(php)正規表現が必要です:
4〜32文字を使用し、文字で始めます。文字、数字、アンダースコア、1つのドット(。)を使用できます。
解決
/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/
またはもう少し短く:
/^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i
他のヒント
/[a-zA-Z][a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*/
さらに、strlen($ username)<!> gt; = 4および<!> lt; = 32かどうかを確認します。
1つのドット制限?それはトリッキーです。
私は正規表現の専門家ではありませんが、それを除いてこれで得られると思います:
[A-Za-z][A-Za-z0-9_.]{3,31}
多分あなたはチェックすることができます。別途必要ですか?
先読みを使用すると、次のことができます。
^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$
必要な正規表現のタイプを指定しなかったため、Perl 5互換のものをたくさん追加しました。キャプチャしていないかっこでは(?: ... )
に似ています。
注:不足している親かっこを追加し直しました。
所属していません StackOverflow