【问题标题】: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时中间不需要分号

【问题讨论】:

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

标签: javascript java c# regex web


【解决方案1】:

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

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

测试样本:

  1. test@test.com;sample@google.com;dsdsd@dsd.sd -> 是的
  2. test@test.com;sample@google.com dsdsd@dsd.sd -> 错误
  3. test@test.com -> 是的
  4. 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]中添加你想要包含的内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2017-10-25
  • 1970-01-01
  • 2014-06-22
相关资源
最近更新 更多