[英]Javascript phone number validation: no regex evaluation
我有一个输入字段,要求用户填写他的电话号码,没有任何符号,只有数字。 规则是:
我写了以下代码:
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;
}
}
工作正常,但不过滤数字内的字母。 怎么了 看来它根本没有通过测试!
您必须使用OR代替AND来表达:
if (inizio!='3' || inizio!='0' || !phoneno.test(numero)) {
您可以使用此正则表达式替换代码:
var phoneno = /^[03]\d{8,14}$/
if ( !phoneno.test(numero) ) {
alert('Il numero di telefono inserito non \u00E8 valido');
$('#tel').focus();
error = error+1;
}
由于您似乎想要一个无正则表达式的解决方案(标题中写有“ no regex评估”),因此这里不使用正则表达式。
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.