Ошибка проверки электронной почты с использованием ng-pattern в AngualurJs?
Я использую следующий шаблон ng для проверки электронной почты
"/^(([^<>()[\]\\.,;:\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,}))$/" /
но я получаю следующую ошибку
- Неверное расположение текста (]+(.[^) В теге ().
- Начальный тег () не закрыт должным образом, ожидается ">".
Пожалуйста, любые предложения.
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