[英]Email validation pattern Unclosed Character Class
我使用的是在如何验证电子邮件中找到的电子邮件验证模式,除了它在电子邮件的第一部分允许+
且我的规范中不允许使用之外,它工作正常。 原始代码是
public static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
protected boolean isInvalidEmail(String email) {
pattern = Pattern.compile(EMAIL_PATTERN);
matcher = pattern.matcher(email);
return !matcher.matches();
}
我以为我可以从"^[_A-Za-z0-9-\\\\+]
删除+
,但出现Pattern Syntax Exception: Unclosed Character Class
。有人可以告诉我为什么删除+
取消该类吗?谢谢!
您必须删除\\\\+
部分。
\\\\
转义\\
字符。 \\+
转义+
正则表达式运算符。 因此\\\\+
分解为\\+
,表示匹配文字+
字符。
注意: +
正则表达式运算符表示匹配前面的一个或多个元素。
它为您提供未封闭Unclosed Character Class
的原因是因为现在仅删除+
转义右方括号,因此将其视为模式的一部分。 因此,该类没有匹配的右方括号。 正如Jonny Henly提到的,解决方案是删除\\\\+
以符合您的规范,但这给出了为什么未封闭的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.