如何在ASP.NET Web API 2.0中验证电子邮件?

时间:2015-06-04 12:11:54

标签: asp.net asp.net-web-api

请在web api方法中提供正则表达式来验证电子邮件ID,如下所示:

// GET: users/sample%40email.com
[Route("users/{emailAddress:regex()}")] 
public IHttpActionResult GetUser(string emailAddress)

在这里,我需要正则表达式,它将验证电子邮件,例如示例%40email.com,并将用于:web api路由属性的regex()。

3 个答案:

答案 0 :(得分:9)

您使用的是哪个版本的框架?如果这是框架4.5,则应用电子邮件属性

 [EmailAddress(ErrorMessage = "Not a valid email")]

RegEx将如下所示

^[a-zA-Z0-9_.+-]+@[email]+\.[a-zA-Z0-9-.]+$

答案 1 :(得分:3)

您可以通过多种方式验证电子邮件地址。您可以使用正则表达式或MailAddress类。

<强>正则表达式

[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(emailAddress, @"\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);

使用MailAddress

public bool IsValid(string emailAddress)
{
    try
    {
        MailAddress m = new MailAddress(emailaddress);

        return true;
    }
    catch (FormatException)
    {
        return false;
    }
}

答案 2 :(得分:3)

以下解决方案适合我。谢谢你的帮助。

// GET: users/sample%40email.com    
[Route("users/{emailAddress:regex(\\[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4})}")] 
public IHttpActionResult GetUser(string emailAddress)