Angularjs 否定电子邮件字段中不需要的字符

Angularjs 否定电子邮件字段中不需要的字符,angularjs,Angularjs,我有一个半工作的AngularJS指令,它的作用是否定不需要的字符,比如字段上的特殊字符。这取决于该指令的属性。问题是它在电子邮件领域不起作用。我想知道为什么。。这是我的密码: <!DOCTYPE html> <html > <head> <link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.

我有一个半工作的AngularJS指令,它的作用是否定不需要的字符,比如字段上的特殊字符。这取决于该指令的属性。问题是它在电子邮件领域不起作用。我想知道为什么。。这是我的密码:

<!DOCTYPE html>
<html >

<head>
  <link rel="stylesheet" type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
</head>

<body ng-app="ngToggle">
  <div>
      <input type="text" ng-model="textModel" class="uncheck" negate-special-characters>
      <input type="text" ng-model="textModel2" class="uncheck" negate-special-characters="address">
      <input type="text" ng-model="textModel3" class="uncheck" negate-special-characters="name">
      <input type="email" ng-model="textModel4" class="uncheck" negate-special-characters="e-mail">
  </div>
  <script type="text/javascript">
        angular.module('ngToggle', [])
        .directive('negateSpecialCharacters', function(){
          return{
            require: 'ngModel',
            link: function(scope, element, attrs, ngModel){
                attrs.$observe('ngModel', function(value){
                    scope.$watch(value, function(newValue){
                      try{
                      if(attrs.negateSpecialCharacters){
                            if(attrs.negateSpecialCharacters == "address"){
                                  regex = /[^a-zA-Z0-9,. ]+/g;
                            }
                            else if(attrs.negateSpecialCharacters == "name"){
                               regex = /[^a-zA-Z- ]+/g;
                            }
                            else if(attrs.negateSpecialCharacters == "e-mail"){
                                 regex = /[^a-zA-Z_0-9@. ]+/g;
                              }
                        }else{
                            regex = /[^a-zA-Z0-9 ]+/g;
                        }
                        clean = newValue.replace(regex, "");
                        ngModel.$setViewValue(clean);
                        ngModel.$render();
                      }catch(err){
                            // Just to catch all the regex errors upon page reload
                            console.log(err);
                    }
                    });
                });
            }
        }
        });
  </script>
</body>

角度。模块('ngToggle',[])
.directive('negativeSpecialCharacters',function(){
返回{
要求:'ngModel',
链接:功能(范围、元素、属性、模型){
属性$observe('ngModel',函数(值){
范围$watch(值,函数)(newValue){
试一试{
if(属性否定特殊字符){
if(attrs.negativeSpecialCharacters==“地址”){
正则表达式=/[^a-zA-Z0-9,.]+/g;
}
else if(attrs.negativeSpecialCharacters==“name”){
正则表达式=/[^a-zA-Z-]+/g;
}
else if(attrs.negativeSpecialCharacters==“电子邮件”){
正则表达式=/[^a-zA-Z_0-9@.]+/g;
}
}否则{
正则表达式=/[^a-zA-Z0-9]+//g;
}
clean=newValue.replace(regex,“”);
ngModel.$setViewValue(干净);
ngModel.$render();
}捕捉(错误){
//只是为了在重新加载页面时捕获所有正则表达式错误
控制台日志(err);
}
});
});
}
}
});

以下是普朗克: