2012-02-24 17 views
1

誰かがこの正規表現が動作しない理由を教えてもらえないかと思います。Java正規表現が正常に動作しない

発現は - >^[A-Za-z0-9$&!#-_?:;\"']+$

問題があり、それがセットにない文字に対して一致です。たとえば、単語matchが正しく一致し、単語match~は表示されませんが、[email protected]match!が正しく一致しません。

私はそれを一致させるためにJavaを使用しています、とのマッチングはかなりまっすぐ進む以下のコードを持つようになります。

 RE re = new RE(expression); 
     return re.match(value); 

私はそれはおそらく私が欠けていることを途方もなくシンプルなものだが、知っている誰もが持っている場合それに関するどんな考えも、私は大いに感謝しています!

+0

あなたの式 'match! 'によると、許容できる値です。 –

+0

これは、「なぜm 'がテストに合格するのですか?あなたによると 'm'は文字クラスにはありません。あなたはクラスの構文を理解しているようです。あなたはアサーション、数量詞などについても知っているようです。 – sln

答えて

1

問題は、あなたの文字セットでハイフン-あるだろう。あなたは#から_までの文字を受け入れています。

^[-A-Za-z0-9$&!#_?:;\"']+$に変更するか、-にエスケープします。

+0

ブルーノ、これはまさに問題でした。どうもありがとうございました。 –

2

私は#-_と思われます。 -を脱出し、それが役立つかどうかを確認してください。

新しい表現は

関連する問題