Validate phone number using javascript

javascript, regex, validation

Solution

JavaScript to validate the phone number:

function phonenumber(inputtxt) {
  var phoneno = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
  if(inputtxt.value.match(phoneno)) {
    return true;
  }
  else {
    alert("message");
    return false;
  }
}

The above script matches:

XXX-XXX-XXXX XXX.XXX.XXXX XXX XXX XXXX

If you want to use a + sign before the number in the following way +XX-XXXX-XXXX +XX.XXXX.XXXX +XX XXXX XXXX use the following code:

function phonenumber(inputtxt) {
  var phoneno = /^\+?([0-9]{2})\)?[-. ]?([0-9]{4})[-. ]?([0-9]{4})$/;
  if(inputtxt.value.match(phoneno)) {
    return true;
  }  
  else {  
    alert("message");
    return false;
  }
}

Problem

I'm trying to validate phone number such as `123-345-3456` and `(078)789-8908` using JavaScript. Here is my code ``` function ValidateUSPhoneNumber(phoneNumber) { var regExp = /^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}/; var phone = phoneNumber.match(regExp); if (phone) { alert('yes'); return true; } alert('no'); return false; } ``` I'm testing the function using `ValidateUSPhoneNumber('123-345-34567')` which has 5 digits before the last hyphen which is invalid as per regex. But the function returns true. Can any one explain why?

Original source