如何匹配逗号分隔的电子邮件列表与正则表达式?

尝试使用asp:RegularExpressionValidatorvalidation文本框中以逗号分隔的电子邮件列表 ,请参阅以下内容:

  

当我在http://regexhero.net/tester/上测试时,它工作正常,但它在我的页面上不起作用。

这是我的示例输入:

 test@test.com,test1@test.com 

我在这篇文章中尝试了一个建议,但无法让它发挥作用。

ps我不想讨论正确的电子邮件validation

试试这个:

 ^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},?)+$ 

在括号后添加+表示前面的组可以存在1次或更多次。

添加^$意味着字符串的开头和匹配的开始(或匹配的结束和字符串的结尾)之间的任何内容都会导致validation失败。

此正则表达式将允许逗号后面带空格的电子邮件。

 ^[\W]*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4}[\W]*,{1}[\W]*)*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4})[\W]*$ 

玩弄这个,一位同事想出了这个更准确的RegEx。 上面的答案似乎通过电子邮件地址列表,其中第一个元素不是电子邮件地址。 这是更新,它还允许逗号后面的空格。

 ^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+,*[\W]*)+$ 

这也有效。 这对电子邮件来说有点严格,并不是说输入的电子邮件地址不止一个或者逗号都存在。

选择最佳的第一个答案匹配abc@xyz.comxyz@abc.com这样无效的字符串。

以下正则表达式将用于逗号分隔的电子邮件ID非常棒。

 ^([\w+-.%]+@[\w.-]+\.[A-Za-z]{2,4})(,[\w+-.%]+@[\w.-]+\.[A-Za-z]{2,4})*$ 

它将匹配单个emailId,逗号分隔的emailId,但如果错过了逗号则不匹配。

第一组将匹配单个emailId的字符串。 第二组可选地需要’*’令牌,即0或更多这样的组但是’,’需要在这样的emailId的开头,这使得逗号分隔的emailId与上述正则表达式匹配。

下面的正则表达式限制性较小,更适合validation手动输入的逗号分隔电子邮件地址列表。 它允许相邻的逗号。

 ^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},*[\W]*)+$ 

使用以下正则表达式,它将解决您的问题。 以下正则表达式也将使用逗号来接收post和pre空格

 /^((([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z\s?]{2,5}){1,25})(\s?,\s*?))$/ 

我知道,我有点迟到了,但我想我会加上我的两分钱,因为接受的答案有一个问题,就是在没有逗号的情况下将电子邮件地址相互匹配。

我提出的正则表达式是这样的:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,}(,[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,})*$

它与接受的答案类似,但解决了我所谈论的问题。 我提出的解决方案是一次或多次搜索“电子邮件地址后跟可选的逗号”,这是接受的答案所做的,此正则表达式搜索“电子邮件地址后跟可选的逗号前缀电子邮件地址任何次数“。

这通过将逗号分组后的电子邮件地址,并使整个组可选,而不仅仅是逗号来解决问题。

注意:此正则表达式用于启用不敏感标志。
您可以使用任何正则表达式匹配您喜欢的电子邮件地址,我只使用了我已经使用的那个。 你只需用你想要使用的正则表达式替换每个[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,}

对我有用的解决方案如下

 ^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)(,([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+))*