Quiero escribir una expresión regular para un número de teléfono de tipo estándar de EE. UU. Que admita los siguientes formatos:
###-###-####
(###) ###-####
### ### ####
###.###.####
donde # significa cualquier número. Hasta ahora se me ocurrieron las siguientes expresiones
^[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}
respectivamente. No estoy muy seguro de si el último es correcto para el cheque con puntos. También quiero saber si hay alguna forma de que pueda escribir una sola expresión en lugar de las 4 diferentes que se adaptan a los diferentes formatos que mencioné. Si es así, no estoy seguro de cómo lo hago. Y también cómo modifico la expresión / expresiones para que también pueda incluir una condición para admitir el código de área como componente opcional. Algo como
+1 ### ### ####
donde +1 es el código de área y es opcional.