电子邮件正则表达式

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

我正在使用这个特殊的正则表达式来检查邮件。

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

我的问题是,这允许“@”符号之前的时段。 有没有什么方法可以修改这个表达式,这样就不会发生这种情况,但所有其他条件都得到了保持。

a。@ b.com应该无效

在此先感谢-Rollin


你可以在@之前放置[^.] ,以便它允许除点之外的任何字符

当然这可能不是你想要的,所以你可以放一个带有任何合法字符的[]

以防万一某人有一个电子邮件名称(我的意思是@之前的部分),这只是一个字符,您可能需要用|


迄今为止我见过的最佳答案。 老实说,如果你给出了你使用哪种语言或工具集的一些说明,我会告诉你为你做这件事的图书馆,而不是告诉你如何手动推出一个正则表达式。

编辑:鉴于这是在.NET上的额外信息,我将使用MailAddress类并放弃使用正则表达式的想法,就像这样:

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

如果除了验证地址本身之外还有其他要求(比如确保它来自特定的一组域或某些类别),那么在验证该地址有效后,您可以通过更简单的测试来做到这一点,正如我建议的另一篇文章。


一场奇怪的比赛。 唯一获胜的举动是不玩。

说真的,用正则表达式验证电子邮件地址的唯一方法是不用正则表达式验证电子邮件地址。 接受电子邮件地址的语法不正常。 确实,现代正则表达式可以支持一些非规则语法,但即便如此,为这样一个复杂语法维护一个正则表达式(如你所见)几乎是不可能的。

我能想到的唯一合理使用正则表达式和电子邮件地址的方法是在客户端进行一些最小检查(它是否包含@符号?)。

你应该做的是:

  • 发送电子邮件到电子邮件地址,并提供用户点击的链接。 如果用户点击该链接,则该电子邮件地址是有效的。 此外,它存在,并且用户可能是在您的表单中输入电子邮件地址的人。 这不仅100%验证了电子邮件地址,还为您提供了更多保证。

  • 如果您不能做1,请使用预先包装的电子邮件验证器。 更好的是,同时使用1和2。

  • 如果你不能做1或2,写一个真正的解析器来验证电子邮件地址。

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

    上一篇: Regular expression for email

    下一篇: What is the correct regular expression for an email address?