public class samppatmatch {
private boolean validatingpswwithpattern(String password){
String math="[a-zA-z0-9]+[(]+(?:[^\\]+|\\.)*";
Pattern pswNamePtrn =Pattern.compile(math);
boolean flag=false;
Matcher mtch = pswNamePtrn.matcher(password);
if(mtch.matches()){
flag= true;
}
return flag;
}
public static void main(String args[]){
samppatmatch obj=new samppatmatch();
boolean b=obj.validatingpswwithpattern("");
System.out.println(b);
}
}
我在上面的代码中遇到了这种类型的异常:
java.util.regex.PatternSyntaxException: Unclosed character class near index 28
答案 0 :(得分:0)
表达式[^\\]
导致正则表达式编译器崩溃(@KevinEsche在注释中注明)因为右括号]
被转义。如果要创建包含\
的字符类,则还需要对其进行转义,以便字符类在Java字符串中如下所示:[^\\\\]
答案 1 :(得分:0)
表达式无效。
因为在表达式中使用了'\\]'
,所以右括号将转义。
解决方案1:您可以像' \\\\] '
这样使用。
或
解决方案2:您可以处理该异常,以获取如下所示的用户友好消息,
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class samppatmatch {
private boolean validatingpswwithpattern(String password) {
boolean flag = false;
try {
String math = "[a-zA-z0-9]+[(]+(?:[^\\]+|\\.)*";
Pattern pswNamePtrn = Pattern.compile(math);
Matcher mtch = pswNamePtrn.matcher(password);
if (mtch.matches()) {
flag = true;
}
} catch (PatternSyntaxException pe) {
System.out.println("Invalid Expression");
}
return flag;
}
public static void main(String args[]) {
samppatmatch obj = new samppatmatch();
boolean b = obj.validatingpswwithpattern("Admin@123");
System.out.println(b);
}
}