【问题标题】:Angular email validation with double dots带有双点的角度电子邮件验证
【发布时间】:2016-09-21 07:39:15
【问题描述】:

我的电子邮件验证有问题。我使用 Angular.js。 在我的表单中,我有一个输入:

<input class="form-control input-flat-underline"
                               ng-pattern="/^[\w\.-]+@[\w\.-]+\.[\w]+$/"
                               id="email" name="email" ng-model="ctrl.user.email" required type="email">

电子邮件

test@test..com

不正常,但验证通过,但电子邮件不正确。我认为问题出在 ng-pattern 中。

【问题讨论】:

  • 因为test@test..com 不是有效的电子邮件地址。
  • 是,但验证通过
  • 有 type="email" 时不需要 ng-pattern,它包含电子邮件验证。

标签: javascript angularjs email


【解决方案1】:

我假设您想验证电子邮件地址。所以在这种情况下,您不需要创建自己的正则表达式模式,因为正确的模式是quite complex。你不想这样做。

这就是你遇到这个问题的原因:即使“test@test..com”通过了 ngPattern 验证(但它应该,这是无效 em> 电子邮件地址,并且您的正则表达式是 not standard compliant),它在 type="email" 验证(Angular 之一)上失败。

Angular 具有内置的电子邮件验证正则表达式(here),您只需使用输入 type="email" 即可使用它。因此,在您的情况下,要进行正确的电子邮件地址验证,您需要做的就是删除 ngPattern:

<input class="form-control input-flat-underline" id="email" name="email" 
        ng-model="ctrl.user.email" 
        required 
        type="email">

【讨论】:

  • 使用ng-message="email" 而不是ng-message="pattern"
【解决方案2】:

您可以通过从输入标签中删除 ng-pattern 选项来尝试 Angular 内置电子邮件验证。 像下面这样:

<input type="email" name="input" ng-model="email.text"  required>

否则您可以尝试使用以下方法进行验证:

<input type="email" name="input" ng-model="email.text" ng-pattern="/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/" required>

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 2021-12-06
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多