2012-03-19 46 views
24

Duplicar posible:
A comprehensive regex for phone number validation
Validate phone number with JavaScriptExpresión regular para validar números telefónicos de EE. UU.?

estoy tratando de escribir una expresión regular para validar los Estados Unidos el número de teléfono del formato (123)123-1234 - verdadera 123-123-1234 - verdadero

todo lo demás no es válido.

me ocurrió algo así como

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

Pero esto valida, 123) -123-1234 (123-123-1234

la que no está bien.

+9

Creo que es mucho más amable para permitir que la gente escriba en su teléfono números de la forma que quieran. Simplemente elimine los dígitos que no sean dígitos e insista en que se queden 10 dígitos después de eso. – Pointy

+0

Esto puede ser un duplicado, pero por favor enlace a las respuestas anteriores antes de marcar la publicación. – mindtonic

Respuesta

44

La forma más fácil para emparejar ambos

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

y

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

es utilizar alternancia ((...|...)): especificarlos como dos opciones mayoritariamente separadas:

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

Por cierto, cuando los estadounidenses poner el código de área entre paréntesis, que en realidad poner una espacio después de eso; por ejemplo, escribiría (123) 123-1234, no (123)123-1234. Así que es posible que desee escribir:

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

(Aunque es probablemente la mejor manera de demostrar explícitamente el formato determinado números de teléfono para estar en.)

+0

La expresión anterior da éxito para (000) 000-0000 ¿cómo podemos evitar eso? – HaBo

+2

@HaBo: ¿Por qué querríamos evitar eso? – ruakh

+4

ya que no es un número de teléfono válido. – HaBo

Cuestiones relacionadas