我用这个

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

Regexp来验证电子邮件

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

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

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


当前回答

我想@”^ ((\ w \.\-]+)@([\ w \-]+)((\.(\ w){2,3}) +)美元“应该工作。 你需要这样写

string email = txtemail.Text;
Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$");
Match match = regex.Match(email);
if (match.Success)
    Response.Write(email + " is correct");
else
    Response.Write(email + " is incorrect");

请注意,如果出现以下情况,此操作将失败:

符号@后面有一个子域。 您使用的TLD长度大于3,例如.info

其他回答

这可以防止其他人在评论中提到的无效邮件:

Abc.@example.com
Abc..123@example.com
name@hotmail
toms.email.@gmail.com
test@-online.com

它还可以防止带有双点的电子邮件:

hello..world@example..com

试着用尽可能多的无效电子邮件地址进行测试。

using System.Text.RegularExpressions;

public static bool IsValidEmail(string email)
{
    return Regex.IsMatch(email, @"\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}\z")
        && Regex.IsMatch(email, @"^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*");
}

请参阅在c#中使用正则表达式验证电子邮件地址。

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

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

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

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

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

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

最佳的电子邮件验证正则表达式

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

这是用法:-

bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);

Visual studio已经有很多年了。

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

希望这能有所帮助!

以上反应的组合。我会使用微软首选的方法使用MailAddress,但实现为字符串的扩展:

public static bool IsValidEmailAddress(this string emailaddress)
    {
        try
        {
            MailAddress m = new MailAddress(emailaddress);
            return true;
        }
        catch (FormatException)
        {
            return false;
        }
    }

然后只需验证任何字符串作为电子邮件地址:

string customerEmailAddress = "bert@potato.com";
customerEmailAddress.IsValidEmailAddress()

清洁简单,便于携带。希望它能帮助到别人。电子邮件的正则表达式很乱。

也就是说,MattSwanson有一个关于这个主题的博客,他强烈建议不要使用正则表达式,而是只检查“@”abd可能是一个点。点击这里阅读他的解释:https://mdswanson.com/blog/2013/10/14/how-not-to-validate-email-addresses.html