用分号正则表达式分隔的多封电子邮件[重复]
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]
中添加你想要包含的内容以上是关于用分号正则表达式分隔的多封电子邮件[重复]的主要内容,如果未能解决你的问题,请参考以下文章