Quero escrever uma expressão regular para um número de telefone do tipo americano padrão que suporte os seguintes formatos:
###-###-####
(###) ###-####
### ### ####
###.###.####
onde # significa qualquer número. Até agora eu vim com as seguintes expressões
^[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. Não tenho certeza se o último está correto para o cheque pontilhado. Também quero saber se há alguma maneira de escrever uma única expressão em vez das 4 diferentes que correspondem aos diferentes formatos que mencionei. Nesse caso, não tenho certeza de como faço isso. E também como faço para modificar a expressão / expressões para que eu possa também incluir uma condição para oferecer suporte ao código de área como componente opcional. Algo como
+1 ### ### ####
onde +1 é o código de área e é opcional.
