Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Custom-验证自定义电子邮件地址的Javascript正则表达式_Javascript_Angular6 - Fatal编程技术网

Custom-验证自定义电子邮件地址的Javascript正则表达式

Custom-验证自定义电子邮件地址的Javascript正则表达式,javascript,angular6,Javascript,Angular6,我希望它是正确的JavaScript正则表达式模式,以验证下面的电子邮件地址场景 /^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/ msekhar@yahoo.com msekhar@cs.aau.edu 女士。sekhar@yahoo.com ms_sekhar@yahoo.com msekhar@cs2.aau.edu msekhar@autobots.ai msekhar@interior.home

我希望它是正确的JavaScript正则表达式模式,以验证下面的电子邮件地址场景

/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/
  • msekhar@yahoo.com
  • msekhar@cs.aau.edu
  • 女士。sekhar@yahoo.com
  • ms_sekhar@yahoo.com
  • msekhar@cs2.aau.edu
  • msekhar@autobots.ai
  • msekhar@interior.homeland1.myanmar.mm
  • msekhar1922@yahoo.com
  • 姆塞哈尔#21@autobots.com
  • \u001\u002@autobots.com
  • 我已经尝试了下面的正则表达式模式,但它并没有验证上面所有的场景

    /^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/
    

    有谁能帮我解决我哪里做错了吗?

    下面的正则表达式应该可以:

    ^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$
    
    ([^()\[\]\,;:\s@\“]+(\.[^()\[\]\,;:\s@\“]+)*)([^()[\]\,;:\s@\“]+\)+([^()[\]\,;:\s@\”]{2,})$
    
    测试它:


    编辑:我已经添加了您所有的测试用例

    我一直使用这个,但请注意,它不会在转义unicode上触发:

    ^([\w\d._\-#])+@([\w\d._\-#]+[.][\w\d._\-#]+)+$
    

    您可以在这里看到它是如何工作的:

    首先
    [\u a-z0-9]+
    将匹配大多数测试用例的用户名字段。对用户名字段内容的任何进一步测试都将导致不匹配。如果您编写的模式需要两个
    分隔的字段,那么当您提供两个
    分隔的字段时,它将匹配,并且只有在这两个字段中匹配,而不是其他任何字段。记住这一点。我想你可能想把
    放在第一个字符集中,在这里省略这一部分:
    ([u a-z0-9]+)

    至于电子邮件地址的域部分,也有类似的情况。。。如果您试图将包含两个标签(
    yahoo
    com
    )的域与期望三个标签的模式进行匹配。。。它会失败,因为少了一个标签,对吗?有些域名只包含一个标签,您可能也想将其识别为电子邮件地址,例如
    localhost

    你知道,有一点,你可以把自己从一个非常深的兔子洞里挖出来,试图解析电子邮件地址,这在很大程度上影响了你。如果你用正则表达式把这个复杂化。。。我想也许更好的工具是一个合适的解析器生成器。。。否则,请填写以下内容:

  • @
    字符之前匹配任何内容的模式
  • @
    字符匹配的模式(这将帮助您了解如何避免与
    相关的错误)
  • 匹配所有内容的模式(这将帮助您了解与
    相关的错误)
  • 按所示顺序将以上三项结合起来

  • 这似乎是一个重复的问题!您是否检查了以下内容?-注释可能重复的可能重复,上述参考主题未考虑本地部分中的unicode字符。另请参见SMTPUTF8中的国际字符在本地部分的使用,该部分已于2012年作为