1

我成功地为单个电子邮件做正则表达式,如下所示:

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

我怎样才能做到这一点?

谢谢

4

1 回答 1

2

让我们不要为多个正则表达式构建一个,因为这个已经足够复杂了,只需单独验证它们:

foreach (var email in emailList.Split(new char[] { ';' },
    StringSplitOptions.RemoveEmptyEntries))
{
    // validate email
}

此外,正则表达式并不是那么适合这样的事情,因为用户可以在分号之前或之后放置一个空格,多个空格 - 它只会变得混乱 - 并且电子邮件已经足够混乱了。

于 2013-08-28T12:05:07.630 回答