我想寫一個指令,通過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