1

我正在使用以下 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,}))$/" /

但我收到以下错误

  • 标签 () 中文本 (]+(.[^) 的位置无效。
  • 开始标记 () 未正确关闭,应为“>”。

请,任何建议。

4

1 回答 1

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

于 2015-08-19T06:45:18.683 回答