代码之家  ›  专栏  ›  技术社区  ›  neo

此电子邮件regex是否排除有效地址?

  •  2
  • neo  · 技术社区  · 15 年前

    我试图创建一个正则表达式 全部的 RFC有效的地址,但是如果有一些误报是可以的(尽管希望不会有那么多)。这是我到目前为止所说的话:

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

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

    5 回复  |  直到 15 年前
        1
  •  3
  •   Jens    15 年前

    电子邮件地址可能包含嵌套的注释,这会破坏大多数regex方法。这是有效的电子邮件地址:

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

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

    /.+@.+/
    
        2
  •  5
  •   Community CDub    8 年前
        3
  •  3
  •   Joey Gumbo    15 年前
    "foo bar"@example.com
    

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

        4
  •  1
  •   Tim Pietzcker    15 年前
    name@[1.2.3.4]
    

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

        5
  •  0
  •   Rob    15 年前

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

    推荐文章