Search code examples
javascriptjqueryregexvalidation

jQuery validate phone number with with RegEx


I have a simple ajax form and I'm trying to validate that it

  1. has a value
  2. that value is a 10 digit number

I'm trying to use RegEx to do so. Here is what I have so far.

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;
        }
});

I know the problem has to do witht he RegExp as if I remove this portion of the code it validates that the box has a value.

EDIT: Here is the final regex I'm using

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;
    }
});

EDIT 2 Using the suggestions here is what i'm usign which allows spaces and dashes that then get stripped on check

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

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

    }
});

Solution

  • Your regex works fine for me... you could shorten it to just /[0-9]{10}/.

    Your problem is here:

    $("#call_number").val().length < 1. If the number is 10 characters long, it will never be less than 1, no?

    You probably meant something like this:

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