原始来源: RegexLib.com
修改后加入了两个新功能:
1,匹配类似 "lc <deerchao@xxx.com>" 这样的包含姓名的格式.
2,添加了四个命名组: name, email, user, domain. 这样可以方便取出相应的信息.

Regex re = new Regex(@"^((?'name'.+?)\s*<)?(?'email'(?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|""(?'user'(?=[\x01-\x7f])[^""\\]|\\[\x01-\x7f])*""\x20*)*(?'angle'<))?(?'user'(?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|""((?=[\x01-\x7f])[^""\\]|\\[\x01-\x7f])*"")@(?'domain'((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?'angle')(?(name)>)$", RegexOptions.Multiline | RegexOptions.ExplicitCapture);
MatchCollection mc = re.Matches(@"l c <abc@example.com>
Abc@example.com
aBC@example.com
abc.123@example.com
");
foreach (Match ma in mc)
{
  
}

原表达式的最大优点就是匹配能力强大,能吃下各种符合规范(RFC2882)的表达式.
匹配WikiPedia上的10/11个合法邮件地址格式,不合法的一个也不匹配:

Valid e-mail addresses

  • abc@example.com
  • Abc@example.com
  • aBC@example.com
  • abc.123@example.com
  • 1234567890@example.com
  • _______@example.com
  • abc+mailbox/department=shipping@example.com
  • !#$%&'*+-/=?^_`.{|}~@example.com (all of these characters are allowed)
  • "abc@def"@example.com (anything goes inside quotation marks)
  • "Fred Bloggs"@example.com
  • "%()[]\;:,<>"@example.com

Invalid e-mail addresses

  • Abc.example.com (character @ is missing)
  • Abc.@example.com (character dot(.) is last in local part)
  • Abc..123@example.com (character dot(.) is double)
  • A@b@c@example.com (only one @ is allowed outside quotations marks)
  • %()[]\;:,<>@example.com (none of the characters before the @ is allowed outside quotation marks)

强悍的电子邮件地址(email address)正则表达式相关推荐

  1. python使用正则验证电子邮件_如何使用正则表达式验证电子邮件地址?

    在完全RFC 822标准的正则表达式是低效的和模糊的,因为它的长度.幸运的是,RFC 822被取代了两次,目前的电子邮件地址规范是RFC 5322.RFC 5322导致正则表达式,如果研究几分钟并且对 ...

  2. 如何使用正则表达式验证电子邮件地址

    电子邮件正则表达式模式 ^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$ ...

  3. 关于Email地址验证的正则表达式

    iamlaosong文 网上提供的Email地址验证的正则表达式是:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 表达式中比较难以理解的就是其中的[-+. ...

  4. POSIX正则表达式 验证电子邮件地址

    我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有 ...

  5. android edittext email,Android上EditText上的电子邮件地址验证

    慕姐8265434 要执行电子邮件验证,我们有很多方法,但是最简单,最简单的方法是两种方法.1-使用EditText(....).addTextChangedListener它持续在EditText ...

  6. html中电子邮件地址怎么写,什么是Email地址?怎么写

    什么是email地址 EMAIL地址中文名为电子邮件地址,电子邮件地址如真实生活中人们常用的信件一样,有收信人姓名,收信人地址等等.其结构是:用户名@邮件服务器,用户名就是你在主机上使用的登录名.而@ ...

  7. Leetcode 929.独特的电子邮件地址(Unique Email Addresses)

    Leetcode 929.独特的电子邮件地址 1 题目描述(Leetcode题目链接)   每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.co ...

  8. Leetcode929.Unique Email Addresses独特的电子邮件地址

    每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写字母,这些电 ...

  9. mysql正则表达式数字开头_在MySQL中选择所有以5个数字字符(正则表达式)开头的电子邮件地址...

    要获取以5个数字字符开头的电子邮件地址,可选的解决方案是使用REGEXP-select *from yourTableName where yourColumnName regexp "^[ ...

  10. 如何在JavaScript中验证电子邮件地址

    如何在JavaScript中验证电子邮件地址? #1楼 与squirtle相比 ,这是一个复杂的解决方案,但是在正确验证电子邮件方面做得非常出色: function isEmail(email) { ...

最新文章

  1. libACE-6.3.3.so: cannot open shared object file: No such file or directory
  2. Bootstrap学习之二:栅格化布局
  3. matlab 16位灰度值转8位,在matlab中如何将灰度值为24位的转化为8?
  4. linux适应环境,Linux从入门到适应(一):VSCode C++环境配置
  5. Table被web编程弃用的原因
  6. PHP报错:Malformed UTF-8 characters, possibly incorrectly encoded
  7. SQL数据分析之数据提取、数据查询、数据清洗【MySQL速查】
  8. 2021年JAVA原生安卓影视APP源码支持PC+WAP
  9. 论坛源码推荐(12月24日):OS X原生开源游戏模拟器OpenEmu iOS 7条形码扫描器
  10. 双耳节拍 枕头_枕头2.2.1发布
  11. math sqrt python,Python sqrt()函数用法说明
  12. mybatis 的入参和出参
  13. 【英语学习】【WOTD】hamartia 释义/词源/示例
  14. 谷歌浏览器chrome安装vuejs devtools 插件
  15. Centos 6、7 配置BBR加速
  16. python小数点处理_如何在python中打小数点
  17. 土地利用转移矩阵分析与制图(以沮漳河流域为例)
  18. 算力≠智慧! MIT教授抛出「意识来源」新理论:人类认知与计算根本没关系
  19. 7-6 学号识别 (10 分)
  20. SPI协议的Flash

热门文章

  1. Can‘t exec “aclocal“: 没有那个文件或目录 at /usr/share/autoconf/Autom4te/FileUtils.pm line 326.
  2. 在X79 LGA2011上改造安装利民AX120R LGA1200风扇
  3. CSDN博客喜遇中兴老同事
  4. 文字处理技术:文字形状绕排不是挺简单的事吗,怎么搞得这么复杂
  5. 查看dll是32还是64
  6. 解决办法:undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
  7. spark提交到yarn_Spark任务提交方式
  8. hdfs文件分块 java_Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统
  9. 学习git reset 、 git checkout、git revert
  10. c++ primer plus 对象和类