电子邮件#2的正则表达式

本文关键字:正则表达式 电子邮件 | 更新日期: 2023-09-27 17:58:59

我有一个正则表达式,用来检查字符串是否为电子邮件地址:

@"^(((['w]+'.['w]+)+)|(['w]+))@((['w]+'.)+)([A-Za-z]{1,3})$"

这适用于我测试过的所有电子邮件地址,前提是"@"之前的部分至少有四个字符长。

作品:

web1@domain.co.uk

不起作用:

web@domain.co.uk

如何更改正则表达式以允许前缀少于4个字符??

电子邮件#2的正则表达式

asp.net mvc帐户模型中用于电子邮件验证的"标准"regex如下:

@"^['w-]+('.['w-]+)*@([a-z0-9-]+('.[a-z0-9-]+)*?'.[a-z]{2,6}|('d{1,3}'.){3}'d{1,3})(:'d{4})?$"

它允许在@之前有1个以上字符

我认为检查有效电子邮件地址的最佳方法是让用户键入两次,然后向他发送一封电子邮件,并使用验证链接质疑他收到电子邮件的事实。

再次检查您的正则表达式以查看奇怪的有效电子邮件地址列表,您会发现正则表达式不适合执行电子邮件验证任务。

我建议不要使用正则表达式来验证电子邮件(原因如下)http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/

如果你不能发送确认电子邮件,C#中的一个好的选择是尝试创建一个MailAddress并检查它是否失败。

如果使用ASP.NET,则可以使用CustomValidator调用此验证方法。

    bool isValidEmail(string email)
    {
        try
        {
            MailAddress m = new MailAddress(email);
            return true;
        }
        catch
        {
            return false;
        }
    }

您可以使用此正则表达式作为替代:

^([a-z0-9_'.-]+)@(['da-z'.-]+)'.([a-z'.]{2,6})$

它的描述可以在这里找到。

关于正则表达式,起始部分((['w]+'.['w]+)+)强制电子邮件地址的开头有四个字符。Emending this part会为你做这项工作。

验证答案中使用的小技巧,即在上捕获异常

new MailAddress(email);

看起来不太令人满意,因为它认为"a@a"是一个有效的地址——事实上,它几乎不会对任何与正则表达式"*.@.*"匹配的字符串引发异常,这显然太宽松了,例如

new MailAddress("¦#°§¬|¢@¢¬|") 

不会引发异常。

因此,我显然会选择正则表达式匹配

这个例子非常令人满意

https://msdn.microsoft.com/en-us/library/01escwtf%28v=vs.110%29.aspx

你也可以试试这个

^[a-zA-Z0-9._-]*@[a-z0-9._-]{2,}'.[a-z]{2,4}$