“,”之后的多个电子邮件地址中的空格
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 中的地址向多个收件人发送电子邮件?