2012-03-23 22 views
0

私はJavaで全く初心者です。私は、この正規表現を持っているJavascriptに相当するJava REGEX

JavaScriptで:

/[^0-9.,\-\ ]/gi 

は、どのように私はJavaで同じことを行うことができますか?

+0

あなたは「スペースでカンマ」と言うことはできません。 HYPHEN-MINUS文字をエスケープします。 – tchrist

+1

エスケープされていないハイフンを文字クラスの最後の文字または最初の文字のいずれかとすると、これも機能します。スペースキャラクターをエスケープする必要はありません! – Eric

答えて

1

はこれを見ている:あなたはその正規表現に対して繰り返し一致させたい場合は、あなたがどうなる正規表現

+2

Java 4のドキュメントではなく、Java 7のドキュメントを指します!! – tchrist

+0

tchrist最新のバージョンにURLを更新するなど、大胆な編集が必要です。 :-) – Eric

0

とJavaで行うことができますかなり多くhttp://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html Theresの:

Pattern p = Pattern.compile("(?i)[^0-9.,-\ ]"); 
Matcher m = p.matcher(targetString); 

は、次に使用しますあなたが望むマッチを得るためのループ内のマッチャーメソッド。 "i"は大文字小文字を区別しないフラグです(文字が指定されていないので実際には必要ありません)が、 "g"フラグと同等のものは何か分かりません。上記のコードのように、文字列全体を試してみるのではなく、対象の文字列に繰り返しパターンを適用してください。

また、上記のパターンは一度に1文字にしか一致しません。実際には[^0-9.,-\ ]*が必要です。これは0文字以上の文字に対して貪欲に一致します。もし私があなただったら私はPatternクラスのドキュメントを読むでしょう。

+0

whileループで 'find'メソッドを使うのは、プログレッシブマッチングの'/g'フラグと同じです。 – tchrist