C#MVC 4应用程序中的电子邮件地址验证:使用或不使用Regex

dlg*_*ght 22 c# regex asp.net-mvc email-validation asp.net-mvc-4

我有一个MVC 4 Web应用程序,我需要输入并验证一些电子邮件地址,而不向用户的电子邮件地址发送电子邮件.

目前我正在使用此模式的基本正则表达式电子邮件验证:

[RegularExpression(@"\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",
        ErrorMessage = "Please enter correct email address")]
Run Code Online (Sandbox Code Playgroud)

虽然这是验证电子邮件地址,但它会将1@1.1作为有效的电子邮件地址传递.目前我有一个需要符号@符号的验证.符号可以是数字/字母和._-的符号.

我的MVC 4应用程序需要更多标准的电子邮件验证.我怎么做?

Ehs*_*san 75

你需要一个正则表达式.你看这里.如果您使用的是.net Framework4.5,那么您也可以使用.因为它是在.net Framework 4.5中构建的.例

[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)

  • 我使用了[DataType(DataType.EmailAdress)]属性和字符串长度属性,但正如我所见,我忘记了[EmailAdress]属性.现在验证很好.谢谢 (3认同)

Hab*_*bib 23

扩展Ehsan的答案 ....

如果您使用的是.Net framework 4.5,那么您可以使用一种简单的方法来使用EmailAddressAttributeClass in code 来验证电子邮件地址.

private static bool IsValidEmailAddress(string emailAddress)
{
    return new System.ComponentModel.DataAnnotations
                        .EmailAddressAttribute()
                        .IsValid(emailAddress);
}
Run Code Online (Sandbox Code Playgroud)

如果您正在考虑REGEX验证电子邮件地址,请阅读:

我知道如何验证电子邮件地址,直到我阅读RFCPhil Haack


who*_*oah 13

正则表达式:

[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]
Run Code Online (Sandbox Code Playgroud)

或者您可以使用:

    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)

  • 我会结合使用两者。显然 a@a 是一个有效的电子邮件,或者至少它通过了 EmailAddress 属性验证。 (2认同)