2012-01-16 5 views
2

現在、私はこの正規表現を使って文字、ダッシュ、スペースを検証しています。正規表現番号を無効にする

/^[a-zA-Z-\s]*$/ 

は今、私は、これはそれが数字以外のすべてを受け入れるルールを持つように書き換えることができる方法はかなり混乱していますか?何か以外のものを持っている

+1

それは常に文字クラスの開始または終了時にダッシュを入れて、より安全だということに注意してください。それ以外の場合は、 'a-z'のように範囲インジケーターとして誤解される可能性があります。あなたの場合、意味は明らかですが、すべての正規表現エンジンがこれを正しく処理できるわけではありません。 –

答えて

3

、あなたは否定文字クラスを必要とする

[^\d] 

^で始まる文字クラスは\dは数字が含まれている定義済みのクラスである、否定クラスです。

あなたが本当に唯一あなたがこれをさらに短縮することができ桁している場合は、= \D

\D

ので[^\d]ある\dの定義済みの否定はあなたがthis link to a regex reference on regular-expressions.info便利

+0

@BoyTanong私はさらに説明を加えました。 – stema

0

だけで使用を見出すことができるにもあります同じ意味を有する\D[^\d]

/\D/ 
1
/^\D*$/ 

\Dは、数字ではない任意の文字と一致します。上記の式は、完全に非数字で構成された文字列に一致します。

(このパターンは、「ABC」と一致し、「123」または「ab2c」と一致していません。)