java(JDK1.6)正则表达式

java(JDK1.6)正则表达式,java,regex,jdk1.6,Java,Regex,Jdk1.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"

我想检查给定字符串中是否存在任何特殊字符。 我试着按照这个模式做,但没有成功。因此,如果有任何有效的答案,这将是有益的

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中工作。ie[\*&]

matches()
使用
^
$
自动锚定正则表达式(分别是行首和行尾)。因此,您的正则表达式被转换为
^[\\*&]$
,它将只匹配字符串
“*”
“&”

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

旁注:嵌套在类中时不需要转义
*
[*&]
的行为与
[\\*&]

相同,而不是:

boolean b = m.matches();
使用:


As
Matcher\matches
仅在从头到尾匹配完整输入时返回true。

您的不匹配,因为它只查找
*
&

查看它
包含的
的一种简单方法是在开头和结尾用
*
括起该正则表达式,例如:

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

+1这甚至更好,因为您不尝试只匹配检查它是否包含答案的hanks。
Pattern p = Pattern.compile(".*[\\*&].*");