How to validate phone numbers using regex

phone-number, regex, validation

Solution

Better option... just strip all non-digit characters on input (except 'x' and leading '+' signs), taking care because of the British tendency to write numbers in the non-standard form `+44 (0) ...` when asked to use the international prefix (in that specific case, you should discard the `(0)` entirely).

Then, you end up with values like:

 12345678901
 12345678901x1234
 345678901x1234
 12344678901
 12345678901
 12345678901
 12345678901
 +4112345678
 +441234567890

Then when you display, reformat to your hearts content. e.g.

  1 (234) 567-8901
  1 (234) 567-8901 x1234

Problem

I'm trying to put together a comprehensive regex to validate phone numbers. Ideally it would handle international formats, but it must handle US formats, including the following: - `1-234-567-8901` - `1-234-567-8901 x1234` - `1-234-567-8901 ext1234` - `1 (234) 567-8901` - `1.234.567.8901` - `1/234/567/8901` - `12345678901` I'll answer with my current attempt, but I'm hoping somebody has something better and/or more elegant.

Original source

Related problems