Angular Internet Routable电子邮件地址验证

时间:2016-02-22 18:22:47

标签: javascript angularjs regex email-validation

我有一个表单,我需要在提交之前验证可网络路由的电子邮件地址并拒绝本地路由。 ng-pattern="email.text"ng-pattern="email"都会传递失败的bob@bob,因为它们是本地网络之外的客户电子邮件地址。

以下告诉我我正在寻找的内容(许多人正在使用不完全符合RFC标准或不否认本地路由的基本RegEx ):

阅读http://www.regular-expressions.info/email.html,使用正则表达式引用RFC 5322

\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
  |  "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
      |  \\[\x01-\x09\x0b\x0c\x0e-\x7f])*")
@ (?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
  |  \[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
       (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:
          (?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
          |  \\[\x01-\x09\x0b\x0c\x0e-\x7f])+)
     \])\z

有没有办法将上述内容变成需要tld-type的RegEx,因此可以上网?具体来说,我可以在ng-pattern中使用它,例如表单中的ng-pattern="<regex goes here>"

2 个答案:

答案 0 :(得分:1)

我喜欢这里的人 http://www.w3.org/TR/html5/forms.html#valid-e-mail-address

/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/  

扩展

 ^ 
 [a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+ 
 @
 [a-zA-Z0-9] 
 (?:
      [a-zA-Z0-9-]{0,61} 
      [a-zA-Z0-9] 
 )?
 (?:
      \. 
      [a-zA-Z0-9] 
      (?:
           [a-zA-Z0-9-]{0,61} 
           [a-zA-Z0-9] 
      )?
 )*
 $ 

答案 1 :(得分:-1)

Wiktor以所请求的格式注册,传递互联网可路由的电子邮件地址并拒绝本地路由:

$content = scandir('C:');