特别与.NET相关:
是“权威”的答案?还是“普通”的答案?
我问这个问题是因为正式的电子邮件地址规范允许各种奇怪的东西(括号、引用短语等),而大多数人都没有考虑到这些。
请参见this page,其中列出了全面和普通的正则表达式列表。
我认为在电子邮件正则表达式验证方面并没有万能的解决方法。
人们通常只验证错误,例如@和一个点的缺失。然后向该地址发送电子邮件验证。这是确保电子邮件实际有效的唯一方法。
正则表达式说这个匹配约99%
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
我不确定这个问题是否有一个明确的答案,但是如果你忽略实际检查域名是否存在,电子邮件地址可以简化为<username>@<domain>
,其中<domain>
至少包含一个点和两到四个后缀字符。你可以做各种各样的事情来检查非法/特殊字符,但最简单的方法是:
^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$
[\w-\.]+
? - Jimbali[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
可能需要在所有小写版本旁边添加 A-Z,以允许大写字母。