javascript
  • html
  • angularjs
  • regex
  • 2016-06-29 43 views 2 likes 
    2

    我试图使用正则表达式验证电子邮件地址,以便在电子邮件中的任何位置添加空白时引发错误。目前正在使用的正则表达式是这样的:正则表达式不允许电子邮件中任何位置的空格

    <input type="email" class="form-control" name="username" ng-  model="username" id="email" placeholder="Email" ng-pattern='/^(([^<>()\ [\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/' required /> 
    <span ng-show="login.username.$error.pattern">This email format is invalid!  </span> 
    

    问题是它允许我在最后添加空格。我如何修改它,以便在最后添加空白时触发错误消息?

    +1

    大多数我见过的案例在我们从用户表单中使用它们之前,我们会裁剪电子邮件/类似的值。 –

    +0

    出于某种原因,我需要允许用户仅在电子邮件字段不包含任何空格时才提交。任何帮助,将不胜感激。 – Gaurav

    +0

    我没有正则表达式中的最佳解决方案,但如果我处于这种情况,我会尝试比较实际的电子邮件和修剪后的电子邮件。如果两者都相同,则调用正则表达式验证。否则会向用户显示错误。 –

    回答

    1

    最新版本的angularJs(1.5.7)包含一些电子邮件地址验证改进。您可以检查提交here

    线28对应于正则表达式的承诺:

    var EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[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])?)*$/; 
    

    下面的指令代码必须测试验证的正则表达式。它确实检查空格。

    相关问题