尝试使用asp:RegularExpressionValidator
在文本框中验证以逗号分隔的电子邮件列表,请参阅以下内容:
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server" ErrorMessage="Wrong email format (separate multiple email by comma [,])" ControlToValidate="txtEscalationEmail"
Display="Dynamic" ValidationExpression="([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},?)" ValidationGroup="vgEscalation"></asp:RegularExpressionValidator>
我在http://regexhero.net/tester/测试时效果很好,但它在我的页面上不起作用。
这是我的示例输入:
test@test.com,test1@test.com
我在this post中尝试了一个建议,但无法让它发挥作用。
P.S。我不想讨论正确的电子邮件验证
答案 0 :(得分:19)
此正则表达式将允许逗号后面带空格的电子邮件。
^[\W]*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4}[\W]*,{1}[\W]*)*([\w+\-.%]+@[\w\-.]+\.[A-Za-z]{2,4})[\W]*$
玩弄这个,一位同事提出了这个更准确的RegEx。上面的答案似乎通过电子邮件地址列表,其中第一个元素不是电子邮件地址。这是更新,它也允许逗号后面的空格。
答案 1 :(得分:15)
试试这个:
^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},?)+$
在括号后添加+
表示前面的组可以出现1次或更多次。
添加^
和$
意味着字符串的开头和匹配的开头(或匹配的结尾和字符串的结尾)之间的任何内容都会导致验证失败
答案 2 :(得分:2)
选择最佳的第一个答案与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与上述正则表达式匹配。
答案 3 :(得分:1)
^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+,*[\W]*)+$
这也有效。它在电子邮件上有点严格,并不是说输入的电子邮件地址不止一个或者逗号都存在。
答案 4 :(得分:1)
<meta http-equiv="content-type" content="text/html"; charset="UTF-8">
<div class="my-class">Power, speed, style — James Bond’s 10 greatest drives</div>
关于需要组之间逗号的要点,但不一定要在末尾处理-我主要是添加它,因为它包括一个带有^([\w+.%-]+@[\w.-]+\.[A-Za-z]{2,})( *,+ *(?1))*( *,* *)$
的漂亮子组,因此您只需定义一次实际的电子邮件地址正则表达式,然后就可以使用定界符进行处理了。
此处的电子邮件地址参考:https://www.regular-expressions.info/email.html
答案 5 :(得分:0)
下面的正则表达式限制性较小,更适合验证手动输入的逗号分隔电子邮件地址列表。它允许使用相邻的逗号。
^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,4},*[\W]*)+$
答案 6 :(得分:0)
使用以下正则表达式,它将解决您的问题。以下正则表达式将使用逗号来接收帖子和前置空格
/^((([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z\s?]{2,5}){1,25})(\s?,\s*?))$/
答案 7 :(得分:0)
我有点迟到了,我知道,但我想我会加上我的两分钱,因为接受的答案有一个问题,就是在没有逗号的情况下将电子邮件地址彼此匹配。
我提出的正则表达式是:
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}(,[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,})*$
这与接受的答案类似,但解决了我所谈论的问题。我提出的解决方案是一次或多次搜索“电子邮件地址后跟可选的逗号”,这是接受的答案所做的,此正则表达式搜索“电子邮件地址后跟可选的逗号前缀电子邮件地址任何次数“。
通过将逗号分组后的电子邮件地址,并使整个组可选,而不仅仅是逗号来解决问题。
备注:强>
此正则表达式用于启用不敏感标志
您可以使用任何正则表达式匹配您喜欢的电子邮件地址,我只使用了我已经使用的那个。您只需将每个[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}
替换为您要使用的正则表达式。
答案 8 :(得分:0)
适用于我的解决方案如下
^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)(,([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+))*
答案 9 :(得分:0)
以下RegEx甚至可以用于其中一些最奇怪的电子邮件,并且支持电子邮件之间的逗号。
((?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]),?)+
一些例子:
Valid: planetearth@solar.com
Valid: planet.earth@solar.com
Valid: planet.earth@solar.com,blue.planet@solar.com
Valid: planet-earth@solar-system.com,/#!$%&'*+-/=?^_`{}|~@solar.org,"!#$%&'-/=^_`{}|~.a"@solar.org
Invalid: planet earth@solar.com
希望这会有所帮助。
答案 10 :(得分:0)
最简单的解决方案如下。这将使该字符串与逗号分隔的列表匹配。在代码中使用以下正则表达式。
正则表达式:“ [^,] + ,?”
答案 11 :(得分:0)
@Donut答案的简单修改允许相邻逗号,两个或两个以上字符的所有TLD以及电子邮件地址和逗号之间的任意空格。
^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,}(\s*,?\s*)*)+$
您将需要在一侧拆分和删除空格和空字符串,但这应该是总体上更好的用户体验。
匹配列表示例:
答案 12 :(得分:0)
^([\w+-.%]+@[\w-.]+\.[A-Za-z]+)(, ?[\w+-.%]+@[\w-.]+\.[A-Za-z]+)*$
每个逗号后的0或1个空格以及长域扩展名都可以正确使用