使用AngualurJs中的ng-pattern进行电子邮件验证时出错?

时间:2015-08-19 06:14:59

标签: angularjs ng-pattern

我正在使用以下ng-pattern验证电子邮件

 "/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[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,}))$/" />

我的电子邮件字段代码如下:

<input type="text" id="email" name="email" data-ng-model="userInfoDto.email" class="form-control" placeholder="Email" title="Email" data-ng-required="true  autofocus="autofocus" data-ng-blur="chcekUniqueEmail()" data-ng-pattern="/^(([^<>()[]\\.,;:\s@\"]+(\.[^<>()[]\\.,;:\s@\"]+)*)|(\".+\"))@‌​(([[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,}))$/" /

但我收到了以下错误

  • 文本中的无效位置(] +(。[^)在tag()中。
  • 开始标记()未正确关闭,预期&#39;&gt;&#39;。

请提出任何建议。

1 个答案:

答案 0 :(得分:1)

如果要验证电子邮件,请使用type =“email”而不是type =“text”的输入。 AngularJS开箱即用,因此无需使用ng-pattern。

以下是原始文档中的示例:

<script>
function Ctrl($scope) {
     $scope.text = 'me@example.com';
     $scope.email = /^[a-z]+[a-z0-9._]+@[a-z]+\.[a-z.]{2,5}$/;
}
</script>
<form name="myForm" ng-controller="Ctrl">
    Email: <input type="email" name="input" ng-model="text" required>
    <span class="error" ng-show="myForm.input.$error.required"> Required!</span>
    <span class="error" ng-show="myForm.input.$error.email"> Not valid email!</span>
    <tt>text = {{text}}</tt><br/>
    <tt>myForm.input.$valid = {{myForm.input.$valid}}</tt><br/>
    <tt>myForm.input.$error = {{myForm.input.$error}}</tt><br/>
    <tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
    <tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
    <tt>myForm.$error.email = {{!!myForm.$error.email}}</tt><br/>
</form>

有关详细信息,请阅读此文档:https://docs.angularjs.org/api/ng/input/input%5Bemail%5D