2012-03-19 27 views
24

Eventuali duplicati:
A comprehensive regex for phone number validation
Validate phone number with JavaScriptEspressione regolare per convalidare i numeri di telefono statunitensi?

Sto cercando di scrivere un'espressione regolare per convalidare il numero di telefono degli Stati Uniti di formato (123)123-1234 - vero 123-123-1234 - vero

ogni altra cosa non valida.

mi è venuta una cosa del genere

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

Ma questa convalida, 123) -123-1234 (123-123-1234

che non è giusto.

+9

Penso che sia molto più amichevole per permettere alle persone di tipo nella loro telefono numeri come vogliono. Basta eliminare i non-numeri e insistere su 10 cifre che rimangono dopo. – Pointy

+0

Potrebbe trattarsi di un duplicato, ma ti preghiamo di collegarti alle risposte precedenti prima di contrassegnare il post. – mindtonic

risposta

44

Il modo più semplice da abbinare sia a

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

e

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

è quello di utilizzare alternanza ((...|...)): specificarli in due versioni per lo più separati:

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

Tra l'altro, quando gli americani mettere il prefisso tra parentesi, in realtà abbiamo messo un spazio dopo quello; ad esempio, scriverei (123) 123-1234, non (123)123-1234. Così si potrebbe desiderare di scrivere:

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

(Anche se è probabilmente meglio per dimostrare esplicitamente il formato che ci si aspetta i numeri di telefono per essere in.)

+0

L'espressione sopra riportata dà successo per (000) 000-0000 come possiamo evitarlo? – HaBo

+2

@HaBo: Perché dovremmo evitarlo? – ruakh

+4

poiché non è un numero di telefono valido. – HaBo

Problemi correlati