代码与范例:
1 2 3 4 5 6 7 8 9 10 11 12 |
$scope.domainList = 'domain1.com|domain2.com'; $scope.isEmailValid = function () { var domains = $scope.domainList; // 第二个参数用于设定大小写不敏感 var re = new RegExp("^[a-zA-Z0-9._%+-]+@(" + domains + ")$", "i"); // 获取 input 关联的 ng-Model 的文本内容 var email = $scope.userLoginForm.userEmail.$modelValue; // 如果尚未输入任何内容,则默认通过验证,否则测试匹配正则表达式 return re.test(email) || !$scope.userLoginForm.userEmail.$dirty; } |
说明:虽然包括 JavaScript 在内的正则表达式实现支持大小写不敏感匹配(i),但 HTML5 中,input 元素的 pattern 属性并不支持该标记位。为此,要实现该功能,必须借助额外的逻辑。如需显示错误信息,可为错误信息添加 ng-show=‘!isEmailValid’ 属性。