2012-03-12 13 views
1

に失敗しました。レールの検証形式の正規表現は、私は、次の正規表現を使用して、レールモデル上で検証チェックを追加しているrubular

rubular.comでテストするとき、正規表現は上記のいずれのパターンとも一致しません。代わりに、この正規表現を使用してrubular試合:

/[^a-zA-Z0-9_. ]/i

誰もが両者の違いの背後にどのような理由を知っていますか?

おかげ

答えて

2

^には2つの意味があります。角括弧の外側で使用すると、 "行は始まります"という意味です。角括弧の中で使用する場合、それは一致するものが反対であることを意味します。私は明らかではないように感じる:[a-z]はすべての小文字に一致し、[^a-z]は小文字以外の文字と一致します。

+0

'[^ ...]'は文字クラス '[...]'を否定するとも言えます。私はそれがどんなに明確であるかわからない。 –

+0

これが事実であると私は完全には分かりません。 Rubular.comに向かい、両方を試してみてください:[^ ...]があるものは非アルファベットと一致しますが、^ [..]は逆をしていません。 – cnicolaou

+1

@muistooshortは '[^ ...]'は文字クラス '[...]'を否定します。 '^ [...]'は '[^ ...]'の反対ではありません。これは、正規表現構文のあいまいさの1つのケースですが、あなたはそれに慣れるでしょう。 – ksol

関連する問題