我成功为这样的单个电子邮件做正则表达式:
private readonly Regex _regex = new Regex(@"^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
现在,我需要为多个电子邮件制作正则表达式,并以分号分隔
test@gmail.com;test2@yahoo.com;test3@gmail.com
我找到了这个正则表达式:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*
但是这个正则表达式也“接收”了这个字符串的问题:
h@kj.com;asds@gmail
我该怎么做?
由于
答案 0 :(得分:2)
我们不要为多个构建正则表达式,因为这个表达式足够复杂,只需单独验证它们:
foreach (var email in emailList.Split(new char[] { ';' },
StringSplitOptions.RemoveEmptyEntries))
{
// validate email
}
此外,正则表达式并不适合这样的事情,因为用户可能在分号之前或之后放置一个空格,多个空格 - 它只是变得混乱 - 而且电子邮件已经非常混乱了。