【问题标题】:Regex for multiple emails separated by commas with valid emails用逗号分隔的多封电子邮件的正则表达式和有效的电子邮件
【发布时间】:2019-11-14 10:36:40
【问题描述】:

我有正则表达式来检查多个以逗号分隔的有效电子邮件,但我无法更新它以允许多个尾随和前导空格。我应该允许以下模式匹配我的正则表达式。

abc@test.com,bcd@test.com, new@test.com,   hello@test.com   ,new@test.com // allow
abc@test.com bcd@test.comnew@test.com// don't allow

我现在使用的正则表达式。

^(\s?[^\s,]+@[^\s,]+\.[^\s,]+\s?,)*(\s?[^\s,]+@[^\s,]+\.[^\s,]+)$

上述正则表达式不允许该模式

abc@test.com,bcd@test.com, new@test.com,   hello@test.com   ,new@test.com

在逗号之后只允许一个空格。我希望正则表达式允许逗号前后有多个空格

【问题讨论】:

  • \s? 表示“0 或 1 个空白字符”(或“可选空白字符”)。将它们更改为\s*“0 个或更多空白字符”。我建议学习一个快速的正则表达式教程,量词是基础,你可能会在 15-30 分钟内更熟悉正则表达式。
  • 完美。像魅力一样工作
  • 其他建议的更改:将@ 添加到@ 之前的否定类,.\. 之前的否定类,并添加一个额外的\s* at $ 锚点之前的结尾(您当前的正则表达式与带有尾随空格的电子邮件列表不匹配)

标签: javascript regex


【解决方案1】:

为什么不先吐出字符串:

function getValidEmailAddresses(strInput)
{
return strInput.split(',').map(p => p.trim())
               .filter(c=> c.test(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/));

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2017-10-25
    • 2014-06-22
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多