2012-03-08 13 views
1

私はgrailsでかなり新しいです、私はregexを使用して一致の検証に問題があります。ピリオド(。)、コンマ(、)、ダッシュ( - )などの英数字と特殊文字の組み合わせをフィールドで受け入れることができるようにするには、数字(099)またはアルファベット(アルファ)を​​使用できますが、特殊文字( ".-、")のみの入力は受け付けません。正規表現を使用してこの種の入力をフィルタリングすることは可能ですか? 助けてください。あなたの知識を共有していただきありがとうございます。regex validation - grails constraints

".*[0-9a-zA-Z.,-]+.*" 

意味:

答えて

4
^[0-9a-zA-Z,.-]*?[0-9a-zA-Z]+?[0-9a-zA-Z,.-]*$ 

meaning: 
/
^  beginning of the string 
    [...]*? 0 or more characters from this class (lazy matching) 
    [...]+? 1 or more characters from this class (lazy matching) 
    [...]*  0 or more characters from this class 
    $   end of the string 
/
+1

良いですが、これはGrails(Javaパターン)用ですので、大文字と小文字を区別しないマッチを使用することはできません。明示的な大文字小文字のマッチング( 'a-zA-Z')で置換するか、最初の'(?i) 'でインラインフラグを使用するかのどちらかです。 – OverZealous

+1

が編集されました。 Javaで何年も働いていない。 RegExesが "/ stuff/flags"スタイルで作成されていることを確認しました。 – Flo

+0

うわー!これは実際に動作します!それは魔法のようです!共有のおかげで、説明のために、私は今、あなたのおかげでそれを理解する! – antibry

1

は、私はあなたがこのような正規表現でそれに一致することができると思います ""

は、任意の文字

"*" で始まるは、これらの文字

のゼロ個以上持っている "[0-9A-ZA-Zを、 - 。]" は、0〜9の範囲内の文字を持っていますazなど、または。あるいは、または -

「+」

(それは、このセット内の1つを持つことが必須です)文字のこの種の1つ以上を有します「」任意の文字

「*」は、これらの文字

これは私のために[OK]を働いているのゼロ個以上を持って、それが役に立てば幸いで終了! 「、 - 」

+0

ないまさにそれがまた以外の他の文字を受け入れるので、私は必要なものをするときに英数字で入力して、しかし、この1つはまた、私は正規表現についての詳細を理解するためにchm052を共有するためのおかげで役立ちます! – antibry