Skip to main content

Regex to match and extract North American phone numbers

I need to match and extract phone numbers from text ... phone numbers that are in this format:

589-845-2889

(589)-845-2889

589.845.2889

589 845 2889

5898452889

(589) 845 2889

The following operation matches the above with great accuracy:

preg_match_all("/(\()?\d{3}(?(1)\))[-. ]?\d{3}[-. ]?\d{4}/", $test, $result);

So I need to extend it to support international prefix, such as 1 or +1. Hence, it should also match 1(589) 845 2889, +1(589) 845 2889, 1589 845 2889, 1 589 845 2889, 15898452889 , etc.

Any help would be greatly appreciated.



source https://stackoverflow.com/questions/70150895/regex-to-match-and-extract-north-american-phone-numbers

Comments