Angular JS Email Validation with unicode characters

后端 未结 5 773
日久生厌
日久生厌 2021-01-05 08:45

I have a sign up form for an application, and angular js is responsible for its validation.

I ran into an issue when Angular js wasn\'t accepting an email address wh

5条回答
  •  佛祖请我去吃肉
    2021-01-05 09:18

    AngularJS uses this regular expression to test email: https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L4

    What you could do is write a directive that checks it yourself. Just copy the one from AngularJS and use your own regexp: 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);
        }
      };
    });
    

    Then you can just do:

    
    

提交回复
热议问题