正则表达式逗号分隔电子邮件

时间:2011-06-20 15:13:47

标签: javascript regex comma

我想让这个正则表达式语句起作用

^([_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

1 个答案:

答案 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”,当然还有多个点。

编辑:“简单”正则表达式的示例

[^@]+@[^.]+(\.[^.]+)+

匹配

  • test@test.com
  • test1@test.com
  • test2@test.com
  • foo@bar.baz.co.uk
  • myname@modern.museum

foo@this....that

不匹配

注意:即使这样也会拒绝一些有效的电子邮件地址,因为@左侧允许任何 - 甚至是另一个@ - 如果它们全部正确转义的话。但我从未在25年内在Real Life中使用过电子邮件。