一尘不染

正则表达式电子邮件验证

c#

我用这个

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

regexp验证电子邮件

([\w\.\-]+)-适用于一级域(许多字母和数字,也包括点和连字符)

([\w\-]+)-适用于二级域

((\.(\w){2,3})+)-适用于包含点和2或3的其他一级域(从3到无穷大)文字

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

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


阅读 1623

收藏
2020-05-19

共1个答案

一尘不染

TLD之类的.museum不能通过这种方式进行匹配,并且还有其他一些长TLD。此外,您还可以使用验证电子邮件地址MailAddress类如微软解释这里的注意事项:

可以使用System.Net.Mail.MailAddress类,而不是使用正则表达式来验证电子邮件地址。若要确定电子邮件地址是否有效,请将电子邮件地址传递给MailAddress.MailAddress(String)类构造函数。

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

        return true;
    }
    catch (FormatException)
    {
        return false;
    }
}

这省去了很多麻烦,因为您不必编写(或尝试了解别人的)正则表达式。

2020-05-19