我的正则表达式有问题。不知何故,在线 regextester 无法使用该模式。
我愿意允许
mymail@whatever.com
和
mymail1@whatever.com;mymail2@whatever.com;mymail3@whatever.com
所以一个不带分号,多个之间有分号,但不在末尾p>
我有什么:
private 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,})$";
public EmailValidator() {
pattern = Pattern.compile(EMAIL_PATTERN);
}
public boolean valid(final String email) {
matcher = pattern.matcher(email);
return matcher.matches();
}
最佳答案
只需将 anchor 之间的模式作为单个电子邮件匹配子模式,并使用它来构建最终模式:
private static final String SINGLE_EMAIL_PATTERN = "[_A-Za-z0-9-+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})";
private static final String EMAIL_PATTERN = "^" + SINGLE_EMAIL_PATTERN + "(?:;" + SINGLE_EMAIL_PATTERN + ")*$";
你的模式看起来像 the one here .
-
^
- 将断言字符串的开头 -
SINGLE_EMAIL_PATTERN
- 将匹配 1 封电子邮件 -
(?:;<SINGLE_EMAIL_PATTERN>)*
- 将匹配 0 个或多个以下序列:-
;
- 一个;
-
<SINGLE_EMAIL_PATTERN>
- 一封电子邮件
-
-
$
- 将断言字符串的结尾。
关于java - Spring验证java模式多邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511176/