我有一个输入字段,要求用户填写他的电话号码,没有任何标志,只有数字。规则是:
我写了以下代码:
if ($('#tel').val()!='') {
var numero=$('#tel').val();
var n = numero.length;
var inizio= numero.charAt(0);
var phoneno = /^\d{9,15}$/;
if (((inizio!='3')&&(inizio!='0'))&&( !phoneno.test(numero))) {
alert('Il numero di telefono inserito non \u00E8 valido');
$('#tel').focus();
error =error+1;
}
}
工作正常,但不会过滤数字内的字母。这有什么问题? 它似乎根本没有通过测试!
答案 0 :(得分:3)
您的表达式必须使用 OR 而不是 AND :
if (inizio!='3' || inizio!='0' || !phoneno.test(numero)) {
答案 1 :(得分:1)
您可以使用此正则表达式替换您的代码:
var phoneno = /^[03]\d{8,14}$/
if ( !phoneno.test(numero) ) {
alert('Il numero di telefono inserito non \u00E8 valido');
$('#tel').focus();
error = error+1;
}
答案 2 :(得分:0)
由于您似乎想要一个无正则表达式解决方案(标题中没有“正则表达式评估”),因此这里不使用正则表达式。
function isValidPhone(phone) {
var firstChar = phone[0];
if (typeof phone !== 'string' ||
(phone.length < 9 || phone.length > 15) ||
!(firstChar === '0' || firstChar === '3')) return false;
return [].every.call(phone, function (char) { return !isNaN(+char); });
}
您可以像以下一样使用它:
var tel = $('#tel').val();
if (tel && !isValidPhone(tel)) {
//invalid phone
}