如何用逗号分隔逗号分隔的电子邮件列表?

问题描述:

试图验证逗号分隔的电子邮件列表在文本框中与asp:RegularExpressionValidator,见下图:如何用逗号分隔逗号分隔的电子邮件列表?

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" 
        runat="server" ErrorMessage="Wrong email format (separate multiple email by comma [,])" ControlToValidate="txtEscalationEmail" 
        Display="Dynamic" ValidationExpression="([\w+-.%][email protected][\w-.]+\.[A-Za-z]{2,4},?)" ValidationGroup="vgEscalation"></asp:RegularExpressionValidator> 

它工作时,我在http://regexhero.net/tester/测试它就好了,但它并没有我的网页上工作。

这里是我的样品输入:

[email protected],[email protected] 

我试过建议在this post,但无法得到它的工作。

p.s.我不希望在适当的电子邮件验证

+0

你能展示添加正则表达式到验证器的代码吗? – 2010-12-10 19:55:55

+0

正则表达式英雄会返回两个匹配您的原始正则表达式。甜甜圈的解决方案只给出一个匹配(应该如此)。我想这意味着RegularExpressionValidator在匹配匹配方面有一些独特的匹配行为。也许两场并排比赛并不能证明比赛是正确的。不应该很难弄清楚。 – 2010-12-10 20:39:01

讨论试试这个:

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

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

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

+0

简单的钱,谢谢! – 2010-12-10 19:58:36

+0

顺便说一句,你知道它为什么没有“+”在线验证器的作品? – 2010-12-10 19:59:42

+0

@roman m没问题,虽然我不确定为什么在线验证器和原始代码之间存在差异。很高兴这有帮助。 – Donut 2010-12-10 20:04:16

这个正则表达式将允许逗号后有空格的邮件。

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

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

+0

这个正则表达式接受一个“。”或空间和最后的任何特殊字符。例如:“[email protected]”。 – 2015-02-11 16:17:50

+1

这不允许'matt @ about.museum'。 – 2015-03-11 17:37:38

+5

要允许长域扩展,请使用'^ [\ W] *([\ w + \ - 。%] + @ [\ w \ - 。] + \。[A-Za-z] + [\ W] * ,{1} [\ W] *)*([\ w + \ - 。%] + @ [\ w \ - 。] + \。[A-Za-z] +)[\ W] * $'只需将{2,4}限制替换为+ – 2015-05-26 15:23:50

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

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

使用以下正则表达式,它将解决您的问题。下面的正则表达式将娱乐预缴空间用逗号太

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

这将匹配,即'-.-。-。-... @ .......,'我不确定它是否是一个有效的电子邮件地址 – Toto 2013-12-17 12:32:41

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

这也将正常工作。这对电子邮件来说有点严格,并且不会有多个电子邮件地址输入或者逗号出现。

+0

它需要,并且;在电子邮件之间。我只需要它,而不是; – Na30m 2017-04-13 14:12:08

+0

我该如何改变这一点? – Na30m 2017-04-13 14:12:16

我对派对有点迟,我知道,但我觉得我会加两分钱,因为接受的答案有电子邮件地址彼此相邻而没有逗号的问题。

我建议正则表达式是这样的:

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

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

解决了问题,将逗号与邮件地址分组,然后使整个组成为可选,而不是逗号。

注: 此正则表达式是为了启用了敏感标志一起使用。
你可以使用任何一个正则表达式匹配你喜欢的邮箱地址,我只是使用了我已经使用过的邮箱地址。你只需用你想使用的任何一个正则表达式替换每个[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,}

被选为最佳的第一个答案匹配字符串,如[email protected]@abc.com,这是无效的。

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

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

它将匹配单EMAILID,逗号分隔EMAILID但如果逗号错过。

第一组将匹配单个emailId的字符串。第二组可选地由'*'令牌需要,即0或更多数量的这样的组,但','需要位于这样的emailId的开始处,这使逗号分隔emailId以匹配上面的正则表达式。