regexvalidationphone-number

How to validate phone numbers using regex


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:

I'll answer with my current attempt, but I'm hoping somebody has something better and/or more elegant.


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