正则表达式来验证逗号分隔的电子邮件地址?
我需要验证可以是单个或多个逗号分隔的电子邮件地址。
在我使用正则表达式验证器之前,我需要一个表达式:
string exp = @"((w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*)*([,])*)*";
它正在验证多个或一个电子邮件地址。
但是同样的表达式在C#中是不会起作用的? 它对有效地址也是有效的。
请纠正我或建议我使用表达式来验证电子邮件地址。
请提供更多细节。 哪些地址被认定为有效,但应该是无效的? 你如何调用正则表达式(你的C#代码)?
我看到的一点是你错过了锚点。
^((w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*)*([,])*)*$
^
匹配字符串的开头
$
匹配字符串的结尾
如果你不使用它们,只要发现一个有效的子字符串,你的模式就会匹配。
我不知道C#我可以给一个想法分裂','
并验证每个分隔符.....它简单
不知道你是如何做验证的,很难说C#为什么要验证验证器拒绝的一些字符串。 最可能的原因是验证器正在查看整个字符串,并且您在C#中使用Regex.IsMatch()
,如果substring
匹配,它也会接受匹配。 要解决该问题,请将A
添加到开始位置,将Z
到正则表达式的末尾。 在你的情况下,整个正则表达式是可选的(由(...)*
包围),所以它也匹配空字符串 - 你想允许吗?
再说,你可能要重新考虑整个正则表达式的方法 - 不理智的正则表达式可以正确地验证电子邮件地址(你还是会通过,只是看起来有效,但不具有与它们相关联的实际帐户地址)。
链接地址: http://www.djcxy.com/p/92639.html上一篇: Regular expression to validate comma separated email addresses?
下一篇: Pattern matching email address using regular expressions