电子邮件的正则表达式

Age*_*unt 1 regex email validation email-validation

可能重复:
验证电子邮件地址的最佳正则表达式是什么?

我正在使用这个特定的正则表达式来检查电子邮件.

"^[A-Za-z0-9](([a-zA-Z0-9,=\.!\-#|\$%\^&\*\+/\?_`\{\}~]+)*)@(?:[0-9a-zA-Z-]+\.)+[a-zA-Z]{2,9}$"
Run Code Online (Sandbox Code Playgroud)

我的问题是,这允许在"@"符号之前的句点.是否有任何方式修改此表达式,以便不会发生这种情况,但仍保留所有其他条件.

a.@ b.com应无效

在此先感谢-Rollin

Lee*_*Lee 7

到目前为止我见过的最佳答案.老实说,如果你给出了你正在使用的语言或工具集的一些指示,我会指出你为你做的那个库,而不是告诉你如何手动滚动正则表达式.

编辑:鉴于这是在.NET上的其他信息,我会使用MailAddress该类并放弃使用正则表达式的想法,如下所示:

public bool IsAddressValid(string text)
{
    try
    {
        MailAddress address = new MailAddress(text);
        return true;
    }
    catch (FormatException)
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果除了验证地址本身之外还有其他要求(例如确保它来自一组特定的域或某些域),那么在验证地址是否有效后,您可以通过更简单的测试来实现这一点.另一篇文章.