Chcę napisać wyrażenie regularne dla standardowego numeru telefonu typu US, który obsługuje następujące formaty:
###-###-####
(###) ###-####
### ### ####
###.###.####
gdzie # oznacza dowolną liczbę. Do tej pory wymyśliłem następujące wyrażenia
^[1-9]\d{2}-\d{3}-\d{4}
^\(\d{3}\)\s\d{3}-\d{4}
^[1-9]\d{2}\s\d{3}\s\d{4}
^[1-9]\d{2}\.\d{3}\.\d{4}
odpowiednio. Nie jestem do końca pewien, czy ostatnia z nich jest poprawna do wykropkowanej kontroli. Chciałbym również wiedzieć, czy jest jakikolwiek sposób, abym mógł napisać jedno wyrażenie zamiast 4 różnych, które obsługują różne formaty, o których wspomniałem. Jeśli tak, nie jestem pewien, jak to zrobić. A także, jak zmodyfikować wyrażenie / wyrażenia, aby można było również dołączyć warunek do obsługi numeru kierunkowego jako składnik opcjonalny. Coś jak
+1 ### ### ####
gdzie +1 to numer kierunkowy i jest opcjonalny.