我有一个要求,我向客户发送多封电子邮件。
但是我在向多个电子邮件 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/