正则表达式来验证逗号分隔的电子邮件地址?

我需要验证可以是单个或多个逗号分隔的电子邮件地址。

在我使用正则表达式验证器之前,我需要一个表达式:

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