1
に失敗しました。レールの検証形式の正規表現は、私は、次の正規表現を使用して、レールモデル上で検証チェックを追加しているrubular
rubular.comでテストするとき、正規表現は上記のいずれのパターンとも一致しません。代わりに、この正規表現を使用してrubular試合:
/[^a-zA-Z0-9_. ]/i
誰もが両者の違いの背後にどのような理由を知っていますか?
おかげ
に失敗しました。レールの検証形式の正規表現は、私は、次の正規表現を使用して、レールモデル上で検証チェックを追加しているrubular
rubular.comでテストするとき、正規表現は上記のいずれのパターンとも一致しません。代わりに、この正規表現を使用してrubular試合:
/[^a-zA-Z0-9_. ]/i
誰もが両者の違いの背後にどのような理由を知っていますか?
おかげ
^
には2つの意味があります。角括弧の外側で使用すると、 "行は始まります"という意味です。角括弧の中で使用する場合、それは一致するものが反対であることを意味します。私は明らかではないように感じる:[a-z]
はすべての小文字に一致し、[^a-z]
は小文字以外の文字と一致します。
'[^ ...]'は文字クラス '[...]'を否定するとも言えます。私はそれがどんなに明確であるかわからない。 –
これが事実であると私は完全には分かりません。 Rubular.comに向かい、両方を試してみてください:[^ ...]があるものは非アルファベットと一致しますが、^ [..]は逆をしていません。 – cnicolaou
@muistooshortは '[^ ...]'は文字クラス '[...]'を否定します。 '^ [...]'は '[^ ...]'の反対ではありません。これは、正規表現構文のあいまいさの1つのケースですが、あなたはそれに慣れるでしょう。 – ksol