jQuery 使用 RegEx 验证电话号码

问题描述 投票:0回答:7

我有一个简单的ajax表单,我正在尝试验证它

  1. 有价值
  2. 该值是一个 10 位数字

我正在尝试使用正则表达式来做到这一点。这是我到目前为止所拥有的。

var reg = new RegExp("/[0-9]{10}/");
$("#call_form").bind("submit", function() {
       if ($("#call_number").val().length < 1 && reg.test($("#call_number").val())) {
               $("#call_error").show();
                return false;
        }
});

我知道问题与正则表达式有关,就好像我删除了这部分代码,它验证了该框具有值。

编辑:这是我使用的最终正则表达式

var regEx = new RegExp("/[0-9]/");

$("#call_form").bind("submit", function() {

    if ($("#call_number").val().length != 10 && !$("#call_number").val().match(regEx)) {
        $("#call_error").show();
        $.fancybox.resize();
        return false;
    }
});

编辑2 使用这里的建议就是我所使用的,它允许空格和破折号,然后在检查时被删除

    $("#call_form").bind("submit", function() {
var Phone = $("#call_number").val().replace(/\D+/g,'');

if (Phone.length != 10) {
        $("#call_error").show();
        $.fancybox.resize();
        return false;

    }
});
javascript jquery regex validation
7个回答
4
投票

这是我使用的 - 它很简单,如果有人正在搜索相同的内容,只需发布即可。

var a = PHONE_FROM_FIELD;
var filter = /^[0-9-+]+$/;
if (filter.test(a)) {
     return true;
}
else {
     return false;
}

干杯!


3
投票

你的正则表达式对我来说效果很好...你可以将其缩短为

/[0-9]{10}/

您的问题在这里:

$("#call_number").val().length < 1
。如果数字有 10 个字符长,它永远不会小于 1,不是吗?

你的意思可能是这样的:

$("#call_number").val().length === 10


3
投票

没有人指出您最初的努力出了什么问题 - 是斜杠(/)。当调用 RegExp 作为构造函数时,不需要斜杠(斜杠是表示正则表达式文本的标记),例如:

var re = /\w+/i;

相当于:

var re = new RegExp('\\w+','i');

请注意,特殊字符必须引用反斜杠。

最后一件事 - 数字中允许有空格。不过,您可以在测试或存储之前将其删除。用户发现读取 3 或 4 位数字块中的数字要容易得多,例如

  • 1234 871 098 比 1234871098 更容易阅读。

1
投票

类似这样的:

var regEx = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/;
$("#call_form").bind("submit", function() {
       var val = $("#call_number").val();
       if (!val.match(regEx)) {
            $("#call_error").show();
            return false;
        }
});

1
投票
function validate_Phone_Number() {
    var number = $('field_Id').val();
    var filter = /^((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$/;
    if (filter.test(number)) {
        return true;
    }
    else {
        return false;
    }
}

0
投票

这是一个使用 jQuery 的方法,并对

keypress
keyup
进行相同的验证。

jQuery 代码

    const goodColor = "#0C6";
    const badColor = "#FF0000";

    const $mobile_validation = $('#mobile_validation');
    
$('#mobile').on('keyup keypress', function(e) {
            if (e.which == 46 || e.which == 45 || e.which < 48 || e.which > 57) {
                    event.preventDefault();
                }
    
                if(this.value.length !=10 ){
                    $mobile_validation.text("Please enter 10 digit mobile number ");
                    $mobile_validation.css("color", badColor);
                }
    
                if(this.value.length ===10 ){
                    $mobile_validation.text("Good!");
                    $mobile_validation.css("color", goodColor);
                }
            });

HTML 代码

<input type="text" id="mobile" class="form-control" name="telephone" maxlength="10">
<span id="mobile_validation"></span>

-2
投票
// check phone number validation
        function validatePhoneNumber(number)
        {
            count=number.length;
            if(number[0]!=" " && number[0]!="-" && number[count-1]!=" " && number[count-1]!="-")
            {
                temp=number.replace(" ", "");
                temp=temp.replace("-", "");
                if($.isNumeric(temp))
                {
                    if(temp.length>=7 && temp.length<=12)
                    {
                        flag=1;
                        for(i=1;i<count;i++)
                        {           
                            if(number[i]=="-" || number[i]==" ")
                            {
                                if(number[i-1]=="-" || number[i-1]==" " || number[i+1]=="-" || number[i+1]==" ")
                                {
                                    flag=0;
                                }
                            }               
                        }

                        if(flag==1)
                        {
                            valid=1;
                        }
                        else
                        {
                            valid=0;
                        }
                    }
                    else
                    {
                        valid=0;
                    }
                }
                else
                {

                    valid=0;
                }

            }
            else
            {
                valid=0;
            }
            return valid;
        }
© www.soinside.com 2019 - 2024. All rights reserved.