2011-01-09 25 views
14

Estoy tratando de validar un número de teléfono (US) sin caracteres adicionales en él. entonces el formato es 1-555-555-5555 sin guiones, espacios, etc. y el 1 es opcional. Sin embargo, mi expresión regular SÓLO excepto los números con el 1 principal y dice que los números sin él son inválidos. Esto es lo que estoy usando ¿dónde me equivoqué?hacer caracteres opcionales en la expresión regular

"^(1)\\d{10}$" 
+0

sin guiones ni espacios? ¿Sabía que lo está haciendo más difícil para el usuario si lo hace (los estudios muestran que las personas tienen más dificultades con cadenas de dígitos largas que con cadenas más cortas con separadores)? Permita los guiones y espacios, y simplemente despréndalos en la entrada. No haga que el usuario haga lo que su software es perfectamente capaz de hacer. Tus usuarios te lo agradecerán –

+0

diseño no depende de mí, pero estoy de acuerdo :) – schwiz

Respuesta

26

Uso:

"^1?\\d{10}$" 

El? significa "opcional".

+1

ahh bien por alguna razón, pensé que el paréntesis significaba opcional. ¡Gracias! – schwiz

14

No ha hecho nada para hacer el 1 opcional. Lo has puesto en un grupo, pero eso es todo. ¿Quieres esto:

"^1?\\d{10}$" 

que básicamente dice que coincide (en este orden):

  • El inicio de la cadena
  • Opcionalmente el carácter '1'
  • Exactamente diez dígitos
  • El final de la cadena

Mira el documentation for Pattern para más detalles. Por ejemplo, ? se enumera en la sección "Cuantificadores codiciosos" de la siguiente manera:

X?               X, una vez o ninguna en absoluto

+2

Gracias por su respuesta a va a darle a Daniel que tiene un montón de representantes e insignias ;-) – schwiz

+1

lol, gracias! :) – Daniel

+0

tienes un montón de representantes y distintivos: D – Michelle

2

Use este "/^((\+?1-[2-9]\d{2}-[2-9]\d{2}-\d{4})|(\([2-9]\d{2}\)(\s)?[2-9]\d{2}-\d{4}))$/" Solo permitirá números permitidos en los EE. UU. Que incluyen "1-xxx-xxx-xxxx", "+ 1-xxx-xxx-xxxx", (xxx) xxx-xxxx. Espero que esto sea lo que estás buscando.

+0

Esto no tiene nada que ver con la pregunta. – Toto

+0

Creo que esta expresión es suficiente para validar cualquier número en los EE. UU. ¿No es así? –

Cuestiones relacionadas