无效的正则表达式 java:未闭合的字符 class

Invalid regular expression java : unclosed character class

我正在尝试在 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})$

请谁能告诉我我必须做些什么来修复它,非常感谢

你已经转义了开头的结束字符class字符:

^[A-Za-z0-9\]

请记住,在字符串解释之后,这将变为:

^[A-Za-z0-9\]

因为您可能想在此处包含反斜杠,请尝试对其进行双重编码:

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

成为转义的反斜杠:

^[A-Za-z0-9\]

在这里[A-Za-z0-9\]一定是[A-Za-z0-9\\]

在你的第一部分

[A-Za-z0-9\]

应该改为

[A-Za-z0-9\\]