[英]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.