Je veux écrire une expression régulière pour un numéro de téléphone standard de type américain qui prend en charge les formats suivants :
###-###-####
(###) ###-####
### ### ####
###.###.####
où # signifie un nombre quelconque. Jusqu'à présent, j'ai obtenu les expressions suivantes
^[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}
respectivement. Je ne suis pas tout à fait sûr que le dernier soit correct pour le contrôle en pointillé. Je voudrais également savoir s'il existe un moyen d'écrire une seule expression au lieu des quatre différentes qui correspondent aux différents formats que j'ai mentionnés. Si c'est le cas, je ne sais pas comment m'y prendre. Je ne sais pas non plus comment modifier l'expression ou les expressions pour pouvoir inclure une condition permettant de prendre en charge le code régional en tant que composant facultatif. Quelque chose comme
+1 ### ### ####
où +1 est l'indicatif régional et il est facultatif.