“,”之后的多个电子邮件地址中的空格

Posted

技术标签:

【中文标题】“,”之后的多个电子邮件地址中的空格【英文标题】:blank space in multiple email addresses after "," 【发布时间】:2012-01-03 14:25:54 【问题描述】:

我正在使用 RegularExpressionValidator 验证多个电子邮件地址,以逗号“,”分隔

我下面的表达式可以很好地满足这个要求:

"((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([,])*)*"

要求这个表达式应该能够处理电子邮件地址中逗号后的空格。

例如我当前的 email1@domain.com,email2@domain.com 的表达式工作文件 但它不做的是 email1@domain.com, email2@domain.com

我知道可以有很多解决方案,但在我看来,最好的办法是增强这种表达方式。

请指导我

【问题讨论】:

我无法回答您的问题,但我想指出您的正则表达式 isn't optimal 【参考方案1】:

您可以使用现有的正则表达式,而是用每个逗号分隔字符串并修剪尾随/前导空格:

var emails = input.Split(',');
foreach (var email in emails.Select(ee => ee.Trim()))

    if (!emailValidator.IsMatch(email))
    
        // announce a bad email
    

【讨论】:

【参考方案2】:

这是我的建议:

((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*([, ])*)*

这将接受电子邮件地址之间的空格

【讨论】:

感谢@Fischermaen,您的建议奏效了。但是您能否也请指导一下为什么 "((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)* ([,\s])*)*" 不起作用,我读到 \s 表示空格?请指导。 在方括号内,每个字符都被解释为一个字符,\s 将匹配一个` and a s`,而不是你想要的空格。【参考方案3】:

除了 Fischermaen 所说的之外,另一种选择可能是将电子邮件拆分为单独的电子邮件,然后分别验证每封电子邮件。

   var emails = emailString.split(',');
   for(var i = 0; i < emails.length; i++)
      var email = emails[i].trim().replace(',', '');
      // Now you can validate a single, comma-less, space-less email;
   

【讨论】:

以上是关于“,”之后的多个电子邮件地址中的空格的主要内容,如果未能解决你的问题,请参考以下文章

如何使用存储在 Excel 中的地址向多个收件人发送电子邮件?

如何从 python 中的 RFC 2822 邮件标头中提取多个电子邮件地址?

循环发送到多个电子邮件地址时,附件流变为 0 字节

抄送电子邮件和多个收件人电子邮件地址不起作用

一封电子邮件转发到多个电子邮件地址

Python 不向多个地址发送电子邮件