私は正規表現を読んで読んでいますが、コードの何が問題になっているのか理解できません。
if(eregi("^[A-Za-z0-9_\-]$", $username)){return true;}
trueを返すことはありません。ユーザー名を検証しようとしていますが、小文字のaz、大文字のaz、数字、ハイフン、アンダースコアのみを許可しています。
私は正規表現を読んで読んでいますが、コードの何が問題になっているのか理解できません。
if(eregi("^[A-Za-z0-9_\-]$", $username)){return true;}
trueを返すことはありません。ユーザー名を検証しようとしていますが、小文字のaz、大文字のaz、数字、ハイフン、アンダースコアのみを許可しています。
eregi()
非推奨です。preg_match()
代わりに使用してください。
正規表現の区切り文字(/
、、、など)@
はありません~
。
を使用しpreg_match('/^[\w-]+\z/')
ます。
/
私が使用した区切り文字です。PHPでは、他の多くの文字を使用できます。\w
へのショートカット[A-Za-z0-9_]
です。ここでは、正規表現を短くし、できれば明確にするのに役立ちます。-
が有効な範囲の一部でない場合、文字通りに解釈されます。このシナリオではエスケープする必要がないため、エスケープしていません。+
1回以上一致することを示す数量詞です。ここでそれが必要です。\z
文字列の終わりに一致することを意味します。を使用しました。$
これにより、末尾が可能になり\n
ます。使用しないeregi
でください-非推奨です。preg_match
代わりに使用してください:
if (preg_match("/^[A-Za-z0-9_\-]+/i$", $username)){return true;}