我尝试创建一个正则表达式,它捕获所有 RFC有效地址,但如果有一些误报(虽然希望不是那么多),也可以。这是我到目前为止所说的:
/^\b\S+@\S+\.[^\s@]{2,}\b$/
是否存在与此表达式不匹配的RFC有效地址,或者您是否有任何改进建议?我不介意误报,但如果你给我看几个,我也很高兴。
答案 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