2012-01-15 21 views
0

私はそうのようなするpreg_matchの文があります。PHP preg_matchが正しく認識されていませんか?

preg_match("/^[0-9a-zA-z\.\_\-]$/", $_POST['username']) 

をしかし、それは常にfalseに相当します。

"aaa" - false 
"#$&Y#" - false 
" a#*$7"- false 

WHY

+0

あなたの入力は実際には二重引用符で囲まれていますか? (あなたが最後にそれを入れているので)もしそうであれば、それはまた – fge

+0

を失敗したのも不思議、ドットをエスケープする必要はありませんが、ここではアンダーませんかダッシュ: '[0-9A-ZA-Z ._-]' – fge

+0

@fgeありません本当。リッチ・アダムスの答えを見てください。できます。真 –

答えて

5

それだけで一つの文字にマッチだことが一つ以上に一致するように、あなたは+を必要としています。

preg_match("/^[0-9a-zA-z\.\_\-]+$/", $_POST['username']) 
+2

。また 'A-z'の注を参照 - と' .'ことを、 '_'と' -'が – fge

+0

ああエスケープする必要はありません!どうもありがとう! –

関連する問題