2011-07-13 16 views
0

例:
hello @#$%^と書くと、禁止されている特殊文字が含まれているためfalseを返します。
もし私がこんにちはを書くなら、それは本当でしょう。
$を書くと、falseになります。
除外したい文字のリストは、 `〜!これらの文字のいずれかが文字列内にあるかどうかを検出するには正規表現が必要です。 。そして非公式のため申し訳ありませんJava Regexの構文(指定した特殊文字を除くすべての文字)

よろしく、
サム

答えて

0

あなたの意図に応じて、最も簡単な方法は、ラ許可したいあなたがを行う文字を列挙することがあります

if(myString.matches("[a-zA-Z0-9_ ]*")) ... 

アンダースコアとスペースを含む英数字の文字列をすべて削除します。あなたは本当にただ、禁止文字の明示的に列挙されたリストを含む文字列を一致させる必要がない場合は、それらを列挙し、特殊な正規表現文字であるものをエスケープする必要があります:

import java.util.regex.Pattern; 

... 

String forbiddenCharacters = "`[email protected]#$%^&*{}[]"':;,.<>?/|\\"; 
if(!myString.matches(".*[" + Pattern.quote(forbiddenCharacters) + "].*")) ... 

ノートのカップル:

  1. forbiddenCharacters文字列に変換するには、バックスラッシュをエスケープする必要があります。
  2. Patternクラスのstatic quote()メソッドを使用すると、正規表現エンジンがその文字列のリテラルバージョンであるかのように解析するように文字列をエスケープできます。つまり、特別な正規表現の文字がそのように処理されるのを防ぎます。
+0

ありがとう、それは私が探していたものでした。私が家に到着したときに私はあなたにプラスを与えます。素晴らしい仕事。 – Sam