无效的正则表达式java:unclosed character class

时间:2015-02-03 15:20:24

标签: java regex email email-validation

我试图在java中使用emailValidator函数,但我遇到了一个问题:

public static boolean EmailValidator(String mail) {
    Pattern pattern;
    Matcher matcher;

    pattern = Pattern.compile("^[A-Za-z0-9\\]{2,2}(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]{2,2}(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,4})$");
    matcher = pattern.matcher(mail);

    return matcher.matches();
}

错误

Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 89
^[A-Za-z0-9\]{2,2}(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]{2,2}(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,4})$

请有人可以告诉我我要做些什么来解决它,非常感谢

3 个答案:

答案 0 :(得分:4)

您已在开头转义了结束字符类字符:

^[A-Za-z0-9\\]

请记住,在字符串解释后,它变为:

^[A-Za-z0-9\]

由于您可能希望包含反斜杠,因此请尝试对其进行双重编码:

^[A-Za-z0-9\\\\]

哪个成为转义反斜杠:

^[A-Za-z0-9\\]

答案 1 :(得分:0)

它在这里[A-Za-z0-9\\]必须是[A-Za-z0-9\\\\]

答案 2 :(得分:0)

在你的第一部分

[A-Za-z0-9\\]

应改为

[A-Za-z0-9\\\\]