2011-06-27 12 views
4

私はpreg_match関数を使ってPHPでperl風味のある正規表現を使用しています。大文字のアルファ文字または数字を使用して、正確に10文字のキーを検証したいと考えています。正確に10文字のperl正規表現

私は、次の有効なものに無効な文字が見つかった

preg_match('/[^A-Z0-9]/', $key); 

を持っています。私の限られた知識で、私はすべて私のテスト文字列でも無効なものと一致することが判明し

preg_match('/[^A-Z0-9]{10}$/', $key); 

を試してみました。

この正規表現はどのように指定しますか?

答えて

8

文字列の先頭を固定する^文字を間違って配置しました。 /[^A-Z0-9]{10}$/は、大文字と数字ではない10文字で終わるすべてのファイルと一致します。

正しいREには次のようになります。正規表現の

preg_match('/^[A-Z0-9]{10}$/', $key); 

説明:

  • ^ - 文字列
    • [の初めから試合は - 、文字クラスの開始文字はこれらと一致する必要があります。大文字
    • 0-9 - - 数字
  • ] - 文字クラス
  • {10}の終わり - ^この[後にまっすぐに発見された場合、それは試合
    • A-Zに否定する前の文字にマッチしますクラス10倍
  • $ - 末尾までの文字列に一致します
+0

+1うまく説明しました – kapa

+0

ああ!私は何をしたのか分かります。私が書いてみると、*無効な*文字があるかどうかチェックし、falseを返します。それから私はそれが10文字長いことを確認したかった。正規表現を書いて*無効な文字**をチェックする方法がありますか?**文字列が10文字であることを確認しますか? – user151841

+0

'/^[^ a-z] {10} $ /'は小文字のない10桁の文字列と一致します。 –