java - Spring验证java模式多邮件

标签 java regex spring validation email

我的正则表达式有问题。不知何故,在线 regextester 无法使用该模式。

我愿意允许

mymail@whatever.com

mymail1@whatever.com;mymail2@whatever.com;mymail3@whatever.com

所以一个不带分号,多个之间有分号,但不在末尾

我有什么:

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/

相关文章:

java - 如何访问变量

javascript - 拒绝数字序列的正则表达式,例如 "1234"

regex - 在使用 SED 替换字符串时使用 Ubuntu 环境变量

javascript - 匹配所有javascript函数的正则表达式

Spring/Neo4J - impermanentGraphDatabase 与事务注释兼容吗?

java - 我如何在 JBoss 中调用 java 服务器类进行 JAAS 身份验证?

java - 如何处理 Java 可选链中的空值记录

java - Pycharm - 内部启动问题 -java.lang.RuntimeException : Could not find installation home path

java - Struts 2 中的文件下载

java - 升级到 Java 7 时有哪些陷阱