电子邮件地址的正确表达式是什么?
重复:Using a regular expression to validate an email address电子邮件地址的正确表达式是什么?
似乎有一个可怕的很多不同的变种,在这个网络上,并想知道是否有一个明确的答案?
最好使用正则表达式的.net(正则表达式)方言。
regular-expressions说,这一个匹配约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])?
我讨厌这个链接页面,以及作者关于什么是可以接受的权衡的想法。这是他列出的正则表达式的更好的版本之一。 – SpoonMeiser 2009-01-16 15:26:18
我前一段时间有同样的问题。 RFC 2822定义它,并根据this page这一个是有用的,是我挑选的人:“[a-z0-9!#$%&'+/=?^ _ {|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_
{|}〜 - ] +) @ ?:a-z0-9?)+(?:[AZ] {2} | com | org | net | gov | mil | biz | info | mobi | name | aero | jobs | museum)\ b“
为什么这需要tld在里面呢?那么.ca和.uk如何呢? – jdkoftinoff 2009-01-16 15:24:01
另外,.asia。试图确保域在正则表达式内是有效的,这是一种徒劳的行为,而不是正则表达式的意义。正则表达式只应确保它是有效的格式。 – SpoonMeiser 2009-01-16 15:29:08
这些仅适用于匹配*美国*地址。当你处于这个状态时,你应该只对域名进行ping操作并检查它是否有效。那么你不必制作一个包含每个可以想象的后缀的正则表达式。 – 2009-01-16 15:32:07
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
可能要在所有小写版本旁添加AZ以允许使用大写字母。
我不认为有一个银色的子弹用于电子邮件正则表达式验证。
人们通常所做的只是验证错误,比如缺少@和一个点。然后发送电子邮件验证到该地址。只有这样才能确保他们的电子邮件实际上是有效的。
我不知道是否有这一个一个明确的答案,但如果抛开实际检查,如果该域存在,电子邮件地址归结为<username>@<domain>
,其中<domain>
包含至少一个点和后缀中的两到四个字符。你可以做各种事情来检查非法/特殊字符,但最简单的将是:
^[\w-\.][email protected]([\w-]+\.)+[\w-]{2,4}$
请参阅一个[问题](http://stackoverflow.com/questions/201323/what-是最最好的正则表达式,用于验证的-电子邮件地址)。 – Keltia 2009-01-16 15:21:03