在下面的代码中,模式没有逗号(,),而与之匹配的字符串包含逗号(,)。因此,理想情况下,代码的输出应该是" Not Matches"。但我得到了输出" Matches"。为什么正则表达式接受逗号(,)?
public static void main(String[] args) {
String expression="Emplogin,,,,434pmc,";
if(expression!=null){
Pattern p1 = Pattern.compile("[A-Za-z0-9'\"-.:\\*?@/\\\\!_#$%&()\\[\\]{}=+\\p{Space}]+");
Matcher m1 = p1.matcher(expression);
if (m1.matches()){
System.out.println("Matches");
}else{
System.out.println("Not Matches");
}
}
}
答案 0 :(得分:1)
减号是一个特殊的字符(表示从引用到点的范围)。逃避它,你的正则表达式应该工作。
Pattern p1 = Pattern.compile("[A-Za-z0-9'\"\\-.:\\*?@/\\\\!_#$%&()\\[\\]{}=+\\p{Space}]+");