2014-06-19 23 views
1

我想檢查給定字符串中是否存在特殊字符。 我嘗試了以下模式,但沒有奏效。所以如果有任何有效的答案,這將是有益的。java(jdk 1.6)正則表達式

Pattern p = Pattern.compile("[\\*&]"); 
Matcher m = p.matcher("a*a&a"); 
boolean b = m.matches(); 

if (b) { 
    System.out.println("Found"); 
} else { 
    System.out.println("Not Found"); 
} 

它在JavaScript中工作。即[\ * &]。

回答

2

相反的:

boolean b = m.matches(); 

使用:

boolean b = m.find(); 

由於Matcher#matches返回true,只有當它全力投入從開始到結束匹配。

+1

+1這更好,因爲您不想匹配只檢查它是否包含 – gtgaxiola

+1

感謝您的答案。 – user3427648

0

matches()自動錨定^$(分別爲行首和行尾)的正則表達式。你的正則表達式因此轉換爲^[\\*&]$,它將只匹配字符串"*""&"

您正在尋找:.*[\\*&].*

旁註:你不需要嵌套在一個類時逃跑*[*&]表現爲[\\*&]

0

此致不匹配,因爲它只是在尋找*&

一種簡單的方式來看待它contains是封閉與.*該正則表達式的開頭和結尾,例如:

Pattern p = Pattern.compile(".*[\\*&].*");