-1

I want to validate a phone number and am using the following regex, although it isn't working.

function validPhoneNumber(phoneNumber) {
  const pattern = /^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
  return pattern.test(phoneNumber);
}

console.log(validPhoneNumber("(123) 456-7890")); //should return true
console.log(validPhoneNumber("(1111)555 2345")); // should return false
console.log(validPhoneNumber("(098) 123 4567")); // should return false
showdev
  • 28,454
  • 37
  • 55
  • 73
peter flanagan
  • 9,195
  • 26
  • 73
  • 127
  • 3
    What about other format variants? [This answer](https://stackoverflow.com/a/4338544/924299) might be informative. – showdev Jun 15 '19 at 07:15
  • 2
    Any reasons why you use `(\()?` instead of `\(?` and `(-|\s)` instead of `[\s-]`? – Junitar Jun 15 '19 at 07:24

2 Answers2

2

Just removed the ? (indicates zero or one occurrences) and \s (to allow only -)

function validPhoneNumber(phoneNumber) {
  const pattern = /^(\()?\d{3}(\))?(-|\s)\d{3}(-)\d{4}$/
  //                                    ^^    ^^^
  return pattern.test(phoneNumber);
}


console.log(validPhoneNumber("(123) 456-7890"))
console.log(validPhoneNumber("(123)-456-7890"))
console.log(validPhoneNumber("(123)456-7890"))
console.log(validPhoneNumber("(1111)555 2345"))
console.log(validPhoneNumber("(098) 123 4567"))
User863
  • 19,346
  • 2
  • 17
  • 41
0

Check This

function validPhoneNumber(phoneNumber){
    const pattern =  /^(\()?\d{3}(\))\s{0,1}(-|\s)?\d{3}-\d{4}$/
    return pattern.test(phoneNumber);
}

validPhoneNumber("(123) 456-7890")  =>  should return true
validPhoneNumber("(1111)555 2345")  => should return false
validPhoneNumber("(098) 123 4567")  => should return false
Kianrad
  • 16