我正在使用在 How to validate an email 找到的电子邮件验证模式它工作正常,除了它允许在电子邮件的第一部分使用 +
而这在我的规范中是不允许的。原代码为
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异常:未关闭的字符类
。有人能告诉我为什么删除 +
会打开该类吗?谢谢!
最佳答案
您必须删除 \\+
部分。
\\
转义 \
字符。 \+
转义 +
正则表达式运算符。因此 \\+
分解为 \+
这意味着匹配文字 +
字符。
注意:+
正则表达式运算符表示匹配前面的一个或多个元素。
关于java - 电子邮件验证模式 Unclosed Character Class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38709100/