【问题标题】:RegEx for email to allow Empty spaces, vaild email address and multiple email addresses用于电子邮件的 RegEx 允许空格、有效电子邮件地址和多个电子邮件地址
【发布时间】:2015-01-23 16:03:19
【问题描述】:

我有这个正则表达式,用于抄送和密送电子邮件字段

reg = /(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)/;

这允许电子邮件字段为空,或者有一个有效的电子邮件地址,否则会出错。

我想扩展 RegEx 以允许多封电子邮件,例如a@a.com, b@b.com, c@c.com

我尝试添加 [,;] 以允许逗号或分号分隔值,但我似乎无法让它工作。

有人知道我是否在[,;] 的正确位置以及我应该把它放在哪里?

更新:我已将 RegEx 更新为,因此它不会查找 gTLD:

注册= /(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[A-Za-z]{2,4} [,;]?)+$/;

谢谢

【问题讨论】:

  • 永远不要像这样测试 TLD 名称,您的列表缺少几十个完全有效的名称
  • 我还在学习 RegEx,关于如何检查所有名称有什么建议吗?
  • 你在什么语言/环境下?
  • 您无法使用正则表达式正确验证电子邮件,除非您不断更新您的正则表达式以匹配所有即将到来的新 gTLD。
  • 在javascript函数中使用。项目在asp中。

标签: javascript regex email


【解决方案1】:

如果 Alex K. 关于 ASP.NET 验证的评论没有帮助,那么我为您准备了一个创可贴。我不认为这是一个正确的答案,因为如果不给我们所有可能出现的电子邮件前和电子邮件后的特殊字符,真的没有办法获得您正在寻找的功能。您可以使用类似这样的东西,它使用非捕获组来帮助查找匹配项。它不是 100% 准确的,但它应该适用于大多数情况。它的一个问题是你很容易捕捉到垃圾/不想要的结果如果它会遇到杂散的@符号。

RegexBuddy 4.2.0 测试的正则表达式:

(?m)(?:^|\s|\n|\t|\r|,|;|
)[^\n]*?@[^\n]*?\.[^\n]*?(?:$|;|\s|,)

使用的测试字符串:

9som$emaIL@cm3Gks.qa1vv; 9som$emaIL@cm3Gks.qa1vv, 9som$emaIL@cm3Gks.qa1vv; 9som$emaIL@cms.com ; 
dd.dd.ddwe.wscef_sed@_e23&&*^.dvcw

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多