在我的应用程序的几个地方,我必须验证字段是有效的法语电话号码。 像这样:
<input type="text" ng-pattern="/^0[1-6]{1}((([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0-9]{2}){4}))$/">
如何使我的应用程序中的多个输入字段重用正则表达式而不复制/粘贴regex
?
我如何本地化regex
?
答案 0 :(得分:2)
调整ngPattern指令:
.directive("customPhonePattern", function () {
return {
restrict: 'A',
require: '?ngModel',
link: function (scope, elm, attr, ctrl) {
if (!ctrl) return;
var patternExp = "/^0[1-6]{1}((([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0-9]{2}){4}))$/";
attr.$observe('customPhonePattern', function (locale) {
switch (locale) {
case "EN":
patternExp = "";
break;
case "DE":
patternExp = "";
break;
}
var regexp = new RegExp(patternExp);
ctrl.$validate();
});
ctrl.$validators.pattern = function (value) {
return ctrl.$isEmpty(value) || isUndefined(regexp) || regexp.test(value);
};
}
};
})
用法
<input type="text" custom-pattern="FR">
<input type="text" custom-pattern="{{ someValue }}">
答案 1 :(得分:1)
您可以定义常量值,例如
var config = {
patternLong: "/^0[1-6]{1}((([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0-9]{2}){4}))$/",
patternShort: "/^[a-zA-Z0-9_.,-]*$/"
};
angular.module('myApp').value('config', config);
在控制器中将此config
注入您需要的位置,并使用config.patternLong
。