0
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
4

2 回答 2

0

该表达式[^\\]导致正则表达式编译器崩溃(@KevinEsche 在评论中指出),因为右括号]被转义。如果您想创建一个包含 a 的字符类\,您还需要对其进行转义,以便字符类在 Java 字符串中看起来像这样:[^\\\\]

于 2015-10-12T06:09:17.407 回答
0

表达式无效。

右括号将被转义,因为您'\\]'在表达式中使用了。

解决方案 1:您可以使用 like ' \\\\] '

或者

解决方案 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);
    }
}
于 2019-03-30T08:22:50.773 回答