java - 正则表达式在 Java 中包含多个 EmailId

标签 java regex email

我有一个要求,我向客户发送多封电子邮件。

但是我在向多个电子邮件 ID 发送电子邮件时遇到了问题。

例如,如果我写

s@t.com;r@t.com

它会抛出一个错误,指出电子邮件 ID 不正确。

我希望电子邮件 ID 用分号分隔,但我的正则表达式似乎不支持分号。

正确的格式应该是:

s@t.com;d@r.com

不应该

s;r@t.com

使用正则表达式

myregex = "^['_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"

请指导。

最佳答案

您有一个用于 1 封电子邮件的正则表达式。

现在,您要检查字符串是否包含 email + ( ; + email ) {任意次数} .

您需要将之前的模式用作没有 anchor 的 block ,并像这样构建最终模式:

String myregex = "['_A-Za-z0-9-+]+(?:\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(?:\\.[A-Za-z0-9]+)*\\.[A-Za-z]{2,}"; 
String final_pattern = "\\A" + regex + "(?:;" + regex + ")*" + "\\z";

参见 regex demo

请注意 \A 是字符串的明确的开头,\z - 非常的字符串结尾 anchor 。

另请注意,字符类中的 + 会失去其作为量词的特殊含义(1 次或多次),并变成/被视为纯粹的文字 + 符号。我还删除了不必要的分组并将所有捕获组变为非捕获组以进行“更清晰”的匹配(如果您不需要捕获的值,为什么将它们存储在每个组的堆栈中?)。

关于java - 正则表达式在 Java 中包含多个 EmailId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38498553/

相关文章:

C# SMTP 邮件不工作?

java - 将 native 函数调用关联到 Java 方法

regex - 在多个向量中搜索序列

java - 如何将 HTML 链接放入电子邮件正文中?

javascript - 正则表达式: Match word or Phrase

php - 坐标的正则表达式 [0 :0:0] in in square brackets

android - 如何使用 Android 代码发送电子邮件

java - 如何为对象引用构建延迟初始化线程安全包装器

java - Jackson ObjectMapper hibernate 问题

java - Android-Gradle-app:transformResourcesWithMergeJavaResForDebug java.util.zip.ZipException