一切正常,除了正则表达式我已尝试过每个解决方案,但即使输入有效,每次其他块都会执行。
我想使用regExp验证有效的电话号码
var inputValidation = function () {
this.validation = function (para1) {
var input = $(document).find('[data-input-validation = ' + para1 + ']');
input.each(function () {
$(this).keyup(function(){
var value = $(this).val();
var validate = new inputValidation();
validate.validater('phoneNumber',value);
});
});
};
this.validater = function(param1,param2) {
switch (param1) {
case 'phoneNumber':
var mobileNumber = new RegExp('/[0-9-()+]{3,20}/');
if(mobileNumber.test(param2)){
alert('valid');
}
else {
alert('false');
}
break;
}
}
};
var validate = new inputValidation();
validate.validation('search');
答案 0 :(得分:3)
您正在混合字符串正则表达式表示法和文字正则表达式表示法。只选择以下之一:
new RegExp('ab+c');
new RegExp(/ab+c/);
在你的情况下可能会这样:
var mobileNumber = new RegExp(/[0-9-()+]{3,20}/);
答案 1 :(得分:1)
表达式中的破折号需要转义。而不是:
/[0-9-()+]{3,20}/
做的:
/[0-9\-()+]{3,20}/
。
如果你拥有它,它会尝试从	 9'做一系列角色。到了'('它无法理解。