2011-07-28 14 views
0

私はこの文字や数字ではないものと一致するように正規表現を書くにはどうすればよいですか?

str = "bla"; 
/([^A-z]|[^0-9])/.test(str.charAt(0)); 

をしようとしているが、それは関係なく、私は、文字列に入れて何を私にtrueを与えない

+0

、すべての文字が非文字や数字以外のいずれかであるため。それを試してみてください!ああ、「A-Z」はあなたの考えではありません。 :) –

答えて

7

あなたの正規表現は「いずれかない文字ではない何かを意味するので、それはです数。" すべて文字は、これらの条件の少なくとも1つを満たしています。私はあなたが本当にしたいことはこれです疑う:「手紙ない数両方ではない何かを」

/[^A-Za-z0-9]/ 

これは、違いを見ます?

補足として、[A-z]は間違っています。 [A-Z][a-z]は2つの異なるキャラクタセットであり、は技術的にはです。いくつかの正規表現エンジンは、これで取り除くことができますが、いくつかはエラーを投げたり、意図しなかったことをしたりします。

"AからZまでの任意の文字を大文字小文字に関係なく"書く正しい方法は[A-Za-z]です。それとも、あなたのケースにされるであろう、あなたの正規表現大文字と小文字を区別しないにするためにiフラグを使用することができます。もちろん

/[a-z0-9]/i 
+0

+1完全な答え! –

関連する問題