Expresión regular para que coincida con el número de teléfono estándar de 10 dígitos

Quiero escribir una expresión regular para un número de teléfono estándar de Estados Unidos 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 seguro de si el último es correcto para el cheque de puntos. También quiero saber si hay alguna forma de 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 hacerlo. 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.

Respuestas a la pregunta(17)

Su respuesta a la pregunta