Regular expression to validate comma separated email addresses?

I need to validate email addresses which can be single or several comma-separated ones.

Before I was using in a regular expression validator an expression like:

string exp = @"((w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*)*([,])*)*";

and it was validating multiple or one single email address.

But same expression is not valdiating in C#? It says valid to invalid addresses as well.

Please correct me or suggest me an expression to validate email addresse(s).


Please give more details. Which addresses are matched as valid, but should be invalid? How do you call the regex (your c# code)?

A point I see is that you are missing anchors.

 ^((w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*)*([,])*)*$

^ matches the start of the string

$ matches the end of the string

If you don't use them your pattern will match as soon as it found a valid sub string.


我不知道C#我可以给一个想法分裂','并验证每个分隔符.....它简单


Without knowing how you're doing the validation, it's hard to tell why C# is validating some strings that the validator had rejected. Most probably it's because the validator is looking at the entire string, and you're using Regex.IsMatch() in C# which would also accept the match if a substring matches. To work around that, add A to the start and Z to the end of your regex. In your case, the entire regex is optional (enclosed by (...)* ) so it also matches the empty string - do you want to allow that?

Then again, you might want to reconsider the regex approach entirely - no sane regex can validate e-mail addresses correctly (and you'll still pass addresses that just look valid but don't have an actual account associated with them).

链接地址: http://www.djcxy.com/p/92640.html

上一篇: 电子邮件和“无电子邮件”的正则表达式

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