Nan*_*anu 7 javascript angularjs
我有一个应用程序的注册表单,angular js负责其验证.
当Angular js没有接受其中包含撇号的电子邮件地址时,我遇到了一个问题."Pear'lpeerh.shin@xyz.com".
我发现angularJs不喜欢电子邮件地址中的unicode字符.
有没有其他人遇到过这样的问题,我有兴趣知道我可以选择在angularJs中摆脱这个错误.
任何投入都表示赞赏.谢谢 !
vit*_*ore 17
如果html5 <input type=email />不重要,您可以使用<input type=text />和模式验证
<input type="text" ng-model="field" ng-pattern="EMAIL_REGEXP" />
Run Code Online (Sandbox Code Playgroud)
你可以使用@Andy Joslin在他的回答中发布的正则表达式
$scope.EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i;
Run Code Online (Sandbox Code Playgroud)
And*_*lin 11
AngularJS使用此正则表达式来测试电子邮件:https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L4
你能做的就是写一个自己检查它的指令.只需从AngularJS复制一个并使用你自己的正则表达式:https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L606-L614
myApp.directive('nanuEmail', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attrs, model) {
//change this:
var EMAIL_REGEXP = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/;
var emailValidator = function(value) {
if (!value || EMAIL_REGEXP.test(value)) {
model.$setValidity('email', true);
return value;
} else {
model.$setValidity('email', false);
return undefined;
}
model.$parsers.push(emailValidator);
model.$formatters.push(emailValidator);
}
};
});
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
<input nanu-email ng-model="userEmail">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16587 次 |
| 最近记录: |