240 votes

Expression régulière pour faire correspondre un numéro de téléphone standard à 10 chiffres

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.

0voto

radeveloper Points 116

Qu'en est-il des nombres multiples avec "+" et séparés par les caractères " ;" "," "-" ou "" ?

0voto

Kelly Milligan Points 146

Je me suis retrouvé avec

const regexBase = '(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})?[-. )]*(\\d{3})[-. ]*(\\d{4,5})(?: *x(\\d+))?'; const phoneRegex = new RegExp('\\s*' + regexBase + '\\s*', 'g');

cela permettait de prendre en compte des éléments tels que les chiffres néerlandais, par exemple.

+358 300 20200

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X