有没有办法在表单验证中使用ng-pattern来验证来自任何字母(拉丁语,中文,韩语,俄语......)的任何字母。
我找到了一个使用XRegExp库的解决方案,但不能使用ng-pattern,因为它需要一个字符串正则表达式。
XRegExp("^\\p{L}[\\p{L} ']*$")
一个解决方案是构建我自己的验证器指令,但如果可能的话,我更愿意使用ng-pattern。
答案 0 :(得分:0)
您仍然可以在ng-pattern中使用该正则表达式。您只需将正则表达式文字作为字符串传递:
ng-pattern="/^\\p{L}[\\p{L} ']*$/"
答案 1 :(得分:0)
ng-pattern="/^.{3,20}$/"
允许任何字符(包括utf-8)和限制3-20个字符,或
ng-pattern="/^.[^*?&]{3,20}$/"
允许任何字符并限制4-20个字符,除了*?& (添加更多字符除外)
答案 2 :(得分:0)
我建议使用自定义指令属性,对我来说效果很好。 例如,下面我们不允许ngModel的中文字符。
function translationModelPatternDirective() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elem, attrs, ngModel) {
if (!ngModel) {
return;
}
var regExp = XRegExp('\p{Han}');
scope.$watch(function() {
return ngModel.$modelValue;
}, function(newValue, oldValue) {
if (!regExp.test(newValue)) {
ngModel.$setViewValue(newValue);
} else {
ngModel.$setViewValue(oldValue);
ngModel.$render();
}
});
}
};
}