繁体   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