我用这个

@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"

用于验证电子邮件的正则表达式
([\w\.\-]+) - 这是一级域(许多字母和数字,还有点和连字符)([\w\-]+) - 这是二级域名((\.(\w){2,3})+) - 这适用于其他级别的域(从 3 到无穷大),其中包括一个点和 2 或 3 个文字

这个正则表达式有什么问题?

编辑:它与“something@someth.ing”电子邮件不匹配

最佳答案

.museum 这样的 TLD 不是这样匹配的,还有一些其他的长 TLD。此外,您可以使用 MailAddress class 验证电子邮件地址,正如 Microsoft 在注释中解释的 here:

public bool IsValid(string emailaddress)
{
    try
    {
        MailAddress m = new MailAddress(emailaddress);

        return true;
    }
    catch (FormatException)
    {
        return false;
    }
}
这为您节省了很多麻烦,因为您不必编写(或尝试理解其他人的)正则表达式。
编辑 :对于那些对 过敏的人尝试/捕获 :在 .NET 20142 中,您可以使用 .NET 2313135另请参阅 https://stackoverflow.com/a/68198658 ,包括如何修复 ..、空格、缺少 .TLD 等的示例。

关于c# - 正则表达式电子邮件验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5342375/

10-16 08:59
查看更多