用分号正则表达式分隔的多封电子邮件[重复]

Posted

技术标签:

【中文标题】用分号正则表达式分隔的多封电子邮件[重复]【英文标题】:Multiple email seperated by semicolon regex [duplicate] 【发布时间】:2019-03-13 20:27:53 【问题描述】:

大家好,我有一个要求,我必须验证用分号分隔的电子邮件地址。例如“test@test.com; test@Tes.com”类似这样的东西。我正在使用以下正则表达式:

(([^@]+@[^\s@]+\.[^\s@;]2,\;0,1\s*))+

这里的问题是,即使中间没有分号但有空格,正则表达式也可以工作,例如"test@test.com Test@tes.com"。但这不正确。所以谁能告诉我如何实现这一点?还有当只有一个电子邮件ID时中间不需要分号

【问题讨论】:

不..不一样。实际上,该帖子是针对正则表达式的。我的我有正则表达式。但是中间的空格而不是分号也匹配。需要避免这种情况以及如何去做是我的问题 实现您要求的另一种常见方法是使用 ; 拆分电子邮件字符串。作为分隔符,然后测试电子邮件验证。 【参考方案1】:

找到了一个有效的正则表达式。测试到 3 封电子邮件。

([^@]+@[^\s@]+.[^\s@;]2,)+(\;([^@]+@[^\s@]+.[ ^\s@;]2,)1,1)*

测试样本:

    test@test.com;sample@google.com;dsdsd@dsd.sd -> 是的 test@test.com;sample@google.com dsdsd@dsd.sd -> 错误 test@test.com -> 是的 test@test.com; -> 错误

这里的关键是遵循 \w+(.\w+)+ 模式。 希望这会有所帮助

【讨论】:

但是当我尝试“test@test.com; test@tes.com”时,它失败了。我还需要空格或没有空格,所以冒号后面的空格。我该怎么办?跨度> 我可以知道您为什么需要空格吗?在现实世界中,应用程序空间将被用于电子邮件。所以你可以在正则表达式匹配之前做一个 replaceAll(" ", "")。 好的。没关系..但我对“test@test.com;test@tes.com;tes”也是如此。这就是我也卡住的地方【参考方案2】:

试试正则表达式(?!.*;$)^([-\w]+?@\w+\.\w+(?:\s*;\s*)?)+$

这将匹配任何号码。由分号分隔的电子邮件。负前瞻 (?!.*;$) 最终不会匹配带有分号的电子邮件。

Regex

【讨论】:

这个'test@test.com; test@Tes.com' 应该匹配,因为它里面有分号,多余的空间无关紧要。如果两封电子邮件之间没有分号且只有空格,则不应匹配。 非常感谢。这就像一个宝石。如果我在邮件 ID 中需要一些特殊字符,如“xyz-xyz@test.com”,我应该怎么做,因为它不接受像'-'这样的字符 [-\w]中添加你想要包含的内容

以上是关于用分号正则表达式分隔的多封电子邮件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#Regular-expression用分号分隔检查十六进制值的字符串

正则表达式awk学习

正则表达式逗号分隔的电子邮件

Java:使用正则表达式拆分字符串而不删除分隔符[重复]

逗号分隔的列表正则表达式 [重复]

用正则表达式去除 html,除了包含字符的标签 [重复]