前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET与.NET Core如何实现邮箱验证

.NET与.NET Core如何实现邮箱验证

作者头像
喵叔
发布2022-03-09 09:02:50
5540
发布2022-03-09 09:02:50
举报
文章被收录于专栏:喵叔's 专栏
一、最简单的实现

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

代码语言:javascript
复制
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,并且字符串中只有一个@符,那么这个字符串就是一个正确的邮箱。

代码语言:javascript
复制
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中我们可以使用正则表达式来解决这个问题。

代码语言:javascript
复制
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 那么他也会验证通过。

代码语言:javascript
复制
public class User
{
    public string Name { get; set; }
    public string Password { get; set; }
    [EmailAddress]
    public string Email { get; set; }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/03/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、最简单的实现
  • 二、.NET 中的实现
  • 三、.NET Core 中的实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档