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(".*[\\*&].*");