我想让这个正则表达式语句起作用
^([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})+(\s?[,]\s?|$))+$
对于使用textbox
的{{1}}中的逗号分隔电子邮件字符串,它将值传递到Regex语句中以查找字符串的错误,如:
jQuery('#textbox').val();
但由于某种原因,它会返回一个错误。我尝试通过http://regexpal.com/运行它,但我不确定?
NB:这只是一个基本的客户端测试。我使用.NET4.0通过服务器端的"test@test.com, test1@test.com,test2@test.com"
验证电子邮件 - 所以不要再扯下我的喉咙。这里的目的是消除简单的错误。
逃脱版本:
MailClass
答案 0 :(得分:2)
您可以通过首先分割逗号来大大简化事情,正如Pablo所说,然后重复应用正则表达式来验证每封电子邮件。然后你也可以指出一个不好的 - 但是有一个很大的警告。
查看文章Comparing E-mail Address Validating Regular Expressions中的正则表达式。还有一个我刚才找不到的更好的正则表达式,但关键是检查电子邮件的正确正则表达非常复杂,因为RFC中指定的有效电子邮件地址的规则非常复杂。
在你的身上,这部分(\.[a-z]{2,3})+
跳了出来;两个或三个字母组{2,3}
我经常将其视为尝试验证顶级域名,但(1)您的正则表达式允许这些组中的一个或更多和( 2)您将从.info
或.museum
等域中排除有效的电子邮件地址(许多网站拒绝我的.us
地址,因为他们认为只有3个字母的域名是合法的。)
我建议拒绝严重无效的地址,同时将最终验证留给服务器,基本上允许(任何)@(任何东西)。(任何东西) - 只检查“at”和“dot”,当然还有多个点。
编辑:“简单”正则表达式的示例
[^@]+@[^.]+(\.[^.]+)+
匹配
与foo@this....that
注意:即使这样也会拒绝一些有效的电子邮件地址,因为@
左侧允许任何 - 甚至是另一个@
- 如果它们全部正确转义的话。但我从未在25年内在Real Life中使用过电子邮件。