3

文字列に対してパターン チェックを使用しようとしていますが、何らかの理由で、一致してはならない文字列が一致すると言っています..

コード:

private static final Pattern VALID_TOKEN = Pattern.compile("^[a-zA-Z0-9\\{\\}\\[\\].+-/=><\\\\*]*$");
System.out.println(VALID_TOKEN.matcher(token).matches());

例:

"123" = true
"1,3" = true // Should NOT BE TRUE
"123*123" = true
"123*^123" = false

上記の例はすべて正しいですが、パターンに COMMA を含めてはならない "1,3" を除きます。誰にもアイデアはありますか?

4

1 に答える 1

2

ダッシュをエスケープする必要があります

+-/

それ以外の場合は、 ~ 、、'+''/'含む範囲として解釈されます。、および。'+'',''-''.''/'

private static final Pattern VALID_TOKEN = Pattern.compile("^[a-zA-Z0-9\\{\\}\\[\\].+\\-/=><\\\\*]*$");
//                              Here ------------------------------------------------^^

または、ダッシュを文字クラスの末尾に移動することもできます (つまり、終了の前に置きます])。

于 2013-02-04T04:23:45.693 に答える