簡體   English   中英

Javascript電話號碼驗證:無正則表達式評估

[英]Javascript phone number validation: no regex evaluation

我有一個輸入字段,要求用戶填寫他的電話號碼,沒有任何符號,只有數字。 規則是:

  • 從0或3開始;
  • 僅包含數字;
  • 長度至少應為9到15位數字;

我寫了以下代碼:

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM