此电子邮件正则表达式是否排除有效地址?

时间:2010-05-18 12:52:28

标签: regex email email-address

我尝试创建一个正则表达式,它捕获所有 RFC有效地址,但如果有一些误报(虽然希望不是那么多),也可以。这是我到目前为止所说的:

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

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

5 个答案:

答案 0 :(得分:5)

看看这篇文章:

Using a regular expression to validate an email address

还有这一个:

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

没有像6000+角色的正则表达式那样!

答案 1 :(得分:3)

"foo bar"@example.com

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

答案 2 :(得分:3)

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

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

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

/.+@.+/

答案 3 :(得分:1)

name@[1.2.3.4]

不匹配但有效。一个很好的有效/无效邮件地址列表,用于测试can be found here

答案 4 :(得分:0)

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