我试图在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})$
请有人可以告诉我我要做些什么来解决它,非常感谢
答案 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\\\\]