簡體   English   中英

MVC4正則表達式來驗證電子郵件

[英]mvc4 regularexpression to validate email

我想驗證用戶輸入的電子郵件。 我想驗證電子郵件是否包含gmail,yahoo,hotmail,rediffmail然后不允許用戶輸入此電子郵件。

我嘗試了以下正則表達式

^([\w-\.]+@(?!gmail)(?!yahoo)(?!hotmail)(?!outlook)(?!rediffmail)([\w-]+\.)+[\w-]{2,6})?$

它驗證電子郵件中是否包含gmail or yahoo or hotmail 但是,如果用戶輸入someone@Gmail.com or someone@gMaIl.com則即使輸入錯了,它也允許該用戶。 我想用忽略大小寫的方式檢查它。

在這里我想忽略大小寫。 我檢查了此鏈接https://msdn.microsoft.com/zh-cn/library/yd1hzczs%28v=vs.110%29.aspx,但是我不知道在上面的表達式中我可以放在哪里 我想在客戶端進行驗證。 我在MVC模型中使用此表達式。

[RegularExpression(@"^([\w-\.]+@(?!gmail)(?!yahoo)(?!hotmail)(?!outlook)(?!rediffmail)([\w-]+\.)+[\w-]{2,4})?$", ErrorMessage = "Please enter valid email")]

您可以這樣寫:

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(?!hotmail|gmail|yahoo)(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

你應該把它放在表情前面

^(?i)([\w-\.]+@(?!gmail)(?!yahoo)(?!hotmail)(?!outlook)(?!rediffmail)([\w-]+\.)+[\w-]{2,6})?$

我認為js正則表達式與.NET正則表達式((?i)vs / i)不同地忽略大小寫。 給定的regex在服務器端可以正常工作,但是客戶端會拋出異常。

這是一種解決方法

^([\w-\.]+@(?!(g|G)(m|M)(a|A)(i|I)(l|L))(?!(y|Y)(a|A)(h|H)(o|O)((o|O)))(?!(h|H)(o|O)(t|T)(m|M)(a|A)(i|I)(l|L))(?!(o|O)(u|U)(t|T)(l|L)(o|O)(o|O)(k|K))(?!(r|R)(e|E)(d|D)(i|I)(f|F)(f|F)(m|M)(a|A)(i|I)(l|L))([\w-]+\.)+[\w-]{2,6})?$

盡管這很丑陋,但希望能對雙方都起作用。

使用Regex的另一種方法是創建自定義的ValidationAttribute ,這種情況下,使用Regex可能會很ValidationAttribute

public class WorkEmailAddressAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value == null)
        {
            return null;
        }

        string[] personalEmailDomains = new string[] { "@gmail.com", "@yahoo.com", "@hotmail.com", "@outlook.com" };
        string valueString = value.ToString();

        foreach (string personalEmailDomain in personalEmailDomains)
        {
            if (valueString.Contains(personalEmailDomain))
            {
                return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
            }
        }

        return null;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM