我用这个

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

Regexp来验证电子邮件

([\w\.\-]+) -用于第一级域名(许多字母和数字,也有点和连字符) ([\w\-]+) -用于二级域 ((\.(\w){2,3})+) -这是用于其他级别域(从3到无穷),其中包括一个点和2或3个字面量

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

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


当前回答

这个正则表达式工作得很完美:

bool IsValidEmail(string email)
{
    return Regex.IsMatch(email, @"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))\z");
}

其他回答

public static bool ValidateEmail(string str)
{                       
     return Regex.IsMatch(str, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
}

我使用上面的代码来验证电子邮件地址。

我有一个用来检查我使用的电子邮件地址的表达。

因为上面没有一个像我的那样简短或准确,我想我应该把它贴在这里。

@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*"
+ "@"
+ @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$";

要了解更多信息,请在这里阅读:c# -电子邮件正则表达式

此外,这将根据电子邮件语法检查RFC有效性,而不是检查电子邮件是否真的存在。测试电子邮件是否真实存在的唯一方法是发送和发送电子邮件,并让用户通过单击链接或输入令牌来验证他们是否收到了电子邮件。

还有一些被抛弃的域名,比如Mailinator.com等等。这并没有做任何事情来验证电子邮件是否来自一次性域名。

试试这个尺寸:

public static bool IsValidEmailAddress(this string s)
{
    var regex = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
    return regex.IsMatch(s);
}
new System.ComponentModel.DataAnnotations.EmailAddressAttribute().IsValid(input)

下面是我们在这种情况下的正则表达式:

@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
                       @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
                       @".)+))([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$",

有三个部分,这是检查。最后一个可能是你需要的。特定的术语{2,6}表示TLD最后的最小/最大长度。 HTH