Expression régulière pour valider les numéros de téléphone américains? [dupliquer]

Doublon Possible:
une regex complète pour la validation du numéro de téléphone
valider le numéro de téléphone avec JavaScript

J'essaie d'écrire une expression régulière pour valider le numéro de téléphone américain du format (123 ) 123-1234 -- vrai 123-123-1234 -- true

Tout le reste n'est pas valide.

Je suis venu quelque chose comme

 ^(?([0-9]{3})?[-]([0-9]{3})[-]([0-9]{4})$

Mais cela valide, 123)-123-1234 (123-123-1234

Ce qui N'est pas juste.

26
demandé sur Community 2012-03-19 23:00:50

1 réponses

Le moyen le plus simple de faire correspondre les deux

^\([0-9]{3}\)[0-9]{3}-[0-9]{4}$

Et

^[0-9]{3}-[0-9]{3}-[0-9]{4}$

Est d'utiliser alternance ((...|...)): spécifiez-les comme deux options principalement distinctes:

^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$

En passant, quand les Américains mettent l'indicatif régional entre parenthèses, nous mettons en fait un espace après cela; par exemple, j'écrirais (123) 123-1234, Pas (123)123-1234. Donc, vous pouvez écrire:

^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$

(bien qu'il soit probablement préférable de démontrer explicitement le format dans lequel vous vous attendez à ce que les numéros de téléphone soient.)

47
répondu ruakh 2012-03-19 19:09:14