我想写一个指令,通过ng字段的两个字段,如移动代码和手机号码。正则表达式基于条件
我在哪里拼接ngmodels和我在哪里使用REGEX。
的条件等, 如果移动代码是015x-的移动的总位数应严格12
如果移动代码是01XX或01xxx - 然后的总位数将是11或12.
的代码是:
angular.module('Validation').directive('mobileNumberValidator', function() {
var MOBILE_NUMBER_REGX = /^(?:(?=015)[0-9]{12} | [0-9]{11,12})$/;
return {
restrict: 'A',
require: 'ngModel',
scope: {
mobilecode: '='
},
link: function (scope, element, attrs, ngModel) {
dovalidation();
element.bind('blur', function() {
scope.$apply(dovalidation);
});
function dovalidation() {
ngModel.$validators.InvalidMobileNumber = function (modelValue, viewValue) {
var value = modelValue || viewValue;
var regexp = scope.mobilecode + value;
if (regexp.length !== 0) {
return MOBILE_NUMBER_REGX.test(regexp);
}
};
}
}
};
});
但如预期的正则表达式不起作用。 :(
是什么符号[0-46-9]是什么意思?这是一个区间? – Khushi
啊谢谢它的工作! – Khushi
@Alamelu'[0-46-9]'意思是匹配__one字符___,它可以在__0到4__的范围内,或者在__6到9__的范围内。也可以是任何一个数字,但是5. – Olian04