2

我尝试创建一个正则表达式来捕获所有RFC 有效地址,但如果出现一些误报也没关系(尽管希望不会太多)。到目前为止,这是我想出的:

/^\b\S+@\S+\.[^\s@]{2,}\b$/

是否有任何与此表达式不匹配的 RFC 有效地址,或者您有任何改进它的建议?我不介意误报,但如果你也给我看一些,我会很高兴。

4

5 回答 5

5

看看这篇文章:

使用正则表达式验证电子邮件地址

还有这个:

http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html

没有什么比 6000 多个字符的正则表达式更好的了!

于 2010-05-18T13:05:30.847 回答
3
"foo bar"@example.com

本地部分可以包含空格(它们必须被引用,但它们是有效的)。

于 2010-05-18T12:57:04.457 回答
3

电子邮件地址可能包含嵌套注释,这会破坏大多数正则表达式方法。这是一个有效的电子邮件地址:

test(Oh (noes, an @) "sign")@(Here comes the domain)domain.com(TLD is com!!)

即使没有注释,本地部分也可能包含带引号的字符串,其中可能包含空格。我发现的最佳方法是:寻找一个@. 那是强制性的。所以我会用

/.+@.+/
于 2010-05-18T15:20:58.163 回答
1
name@[1.2.3.4]

不匹配但有效。可以在此处找到用于测试的有效/无效邮件地址列表。

于 2010-05-18T13:32:02.220 回答
0

尝试 regexbuddy 来验证正则表达式。我经常使用的另一个方便的网站是regexplib

于 2010-05-18T12:59:48.340 回答