0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点# .NET与.NET Core如何实现邮箱验证

一、最简单的实现

邮箱由三部分组成:自定义部分、@符号和域名。我们可以根据这个规则俩验证邮箱。以@符为分割条件,如果可以拆分成两个非空的字符串,那么这个字符串就是一个正确的邮箱。

bool IsEmail(string str)
{
    if (string.IsNullOrWhiteSpace(str))
        return false;
    string[] emial=str.Split('@');
    if(emial.Length ==2 && !string.IsNullOrWhiteSpace(emial[0]) && !string.IsNullOrWhiteSpace(emial[1]))
    {
        return true;
    }
    else
    {
        return false;
    }
}

还有另一种方法来实现简单的验证。思路是这样的,如果@符的位置不在第一位,@符所在的位置小于字符串长度减1,并且字符串中只有一个@符,那么这个字符串就是一个正确的邮箱。

bool IsEmail(string str)
{
    if (string.IsNullOrWhiteSpace(str))
        return false;
    var index = str.IndexOf('@');
    return index > 0 && index < str.Length - 1 && index == str.LastIndexOf('@');
}

二、.NET 中的实现

上一小节中两种实现方式无法保证字符串是否是完全正确的邮箱(例如:112@112),那么在.NET中我们可以使用正则表达式来解决这个问题。

bool IsEmail(string str)
{
    if (string.IsNullOrWhiteSpace(str))
        return false;
    string pattern = @"^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$";
    Regex regex = new Regex(pattern);
    return regex.IsMatch(str);
}

三、.NET Core 中的实现

在.NET Core 中实现邮箱验证就很简单了,直接使用 EmailAddressAttribute 特性即可,但是要注意的是,如果字符串为 null 那么他也会验证通过。

public class User
{
    public string Name { get; set; }
    public string Password { get; set; }
    [EmailAddress]
    public string Email { get; set; }
}
举报

相关推荐

0 条评论