Encontré este código en algún sitio web y funciona perfectamente. Valida que el número de teléfono esté en uno de estos formatos:
(123) 456-7890 o 123-456-7890
El problema es que mi cliente (no sé por qué, tal vez cosas del cliente) quiere agregar otro formato, los diez números consecutivamente, algo como esto: 1234567890 .
Estoy usando esta expresión regular,
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
¿Cómo puedo agregar que también valida el otro formato? No soy bueno con las expresiones regulares.
javascript
regex
Castro Roy
fuente
fuente
Respuestas:
En primer lugar, su validador de formato obviamente solo es apropiado para números NANP (código de país +1). ¿Su aplicación será utilizada por alguien con un número de teléfono de fuera de América del Norte? Si es así, no desea evitar que esas personas ingresen un número [internacional] perfectamente válido.
En segundo lugar, su validación es incorrecta. Los números NANP toman la forma
NXX NXX XXXX
dondeN
es un dígito 2-9 yX
es un dígito 0-9. Además, los códigos de área y los intercambios pueden no tomar la formaN11
(terminar con dos) para evitar confusiones con servicios especiales, excepto los números en un código de área no geográfico (800, 888, 877, 866, 855, 900) pueden tener unN11
intercambio.Por lo tanto, su expresión regular pasará el número (123) 123 4566 aunque no sea un número de teléfono válido. Puede arreglar eso reemplazando
\d{3}
con[2-9]{1}\d{2}
.Finalmente, tengo la sensación de que está validando la entrada del usuario en un navegador web. Recuerde que la validación del lado del cliente es solo una conveniencia que usted brinda al usuario ; aún necesita validar toda la entrada (nuevamente) en el servidor.
TL; DR no utiliza una expresión regular para validar datos complejos del mundo real como números de teléfono o URL . Utiliza una biblioteca especializada .
fuente
Mi expresión regular de elección es:
Formatos válidos:
(123) 456-7890
(123)456-7890
123-456-7890
123.456.7890
1234567890
+31636363634
075-63546725
fuente
i
hace que la expresión no distinga entre mayúsculas y minúsculas ym
realiza búsquedas de varias líneas^
al principio y$
al final, también puede encontrar números de teléfono en el medio de las cadenasSi está buscando 10 y solo 10 dígitos, ignore todo menos los dígitos.
fuente
return (value.match(/\d/g) || []).length == 10
o la mucho más simple (pero igualmente viciado):return value.replace(/\D/g,'').length == 10
./\D/gi.test(value)
. Todo lo que no es un dígito, incluyendo espacios en blanco, guiones, etc ...Lo que haría es ignorar el formato y validar el contenido numérico:
fuente
Esta es una opción muy flexible y prefiero mantenerla de esta manera, principalmente la uso en formularios de registro donde los usuarios necesitan agregar su número de teléfono. Por lo general, los usuarios tienen problemas con los formularios que aplican reglas de formato estrictas, prefiero que el usuario complete el número y el formato en la pantalla o antes de guardarlo en la base de datos. http://regexr.com/3c53v
fuente
+41 (79) 123 45 67
(Suiza):/^[+]?[\s./0-9]*[(]?[0-9]{1,4}[)]?[-\s./0-9]*$/g
El siguiente REGEX validará cualquiera de estos formatos:
(123) 456-7890
123-456-7890
123.456.7890
1234567890
fuente
.
o, de lo contrario, coincidirá con un personaje arbitrario, rompiendo tu expresión regular.Sugeriría usar algo más claro (especialmente pensando en quién tendrá que mantener el código) ... ¿qué pasa con:
donde la expresión regular se construye a partir de una plantilla clara? Agregar uno nuevo sería obvio e incluso el propio cliente podría hacerlo en una página de "opciones".
fuente
Donde str podría ser cualquiera de estos formarts: 555-555-5555 (555)555-5555 (555) 555-5555 555 555 5555 5555555555 1 555 555 5555
fuente
Pruebe este: también incluye validación para formatos internacionales.
/^[+]?(1\-|1\s|1|\d{3}\-|\d{3}\s|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3})(\-|\s)?(\d{4})$/g
Esta expresión regular valida el siguiente formato:
fuente
/^\+?1?\s*?\(?\d{3}(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$/
Aunque este post es antiguo pero quiero dejar mi contribución. estos son aceptados: 5555555555 555-555-5555 (555)555-5555 1 (555) 555-5555 1 555 555 5555 1 555-555-5555 1 (555) 555-5555
estos no son aceptados:
555-5555 -> para aceptar este uso:
^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$
5555555 -> para aceptar este uso:
^\+?1?\s*?\(?(\d{3})?(?:\)|[-|\s])?\s*?\d{3}[-|\s]?\d{4}$
1 555) 555-5555 123 ** & !! asdf # 55555555 (6505552368) 2 (757) 622-7382 0 (757) 622-7382 -1 (757) 622-7382 2 757 622-7382 10 (757) 622 -7382 27576227382 (275) 76227382 2 (757) 6227382 2 (757) 622-7382 (555) 5 (55?) - 5555
Este es el código que utilicé:
fuente
Esto funcionará:
El
?
carácter significa que el grupo anterior debe coincidir cero o una vez. El grupo(-|\s)
coincidirá con uno-
o un|
personaje. Agregar?
después de la segunda aparición de este grupo en su expresión regular le permite hacer coincidir una secuencia de 10 dígitos consecutivos.fuente
realmente simple
fuente
Las respuestas de todos son geniales, pero aquí hay una que creo que es un poco más completa ...
Esto está escrito para el uso de coincidencia de JavaScript de un solo número en una sola línea:
Si desea hacer coincidir los límites de palabras, simplemente cambie ^ y $ a \ b
Agradezco cualquier sugerencia, corrección o crítica de esta solución. Por lo que puedo decir, esto coincide con el formato NANP (para números de EE. UU. - No validé otros países de América del Norte al crear esto), evita cualquier error 911 (no puede estar en el código de área o código de región), elimina solo aquellos 555 números que en realidad no son válidos (código de región de 555 seguido de 01xx donde x = cualquier número).
fuente
/^(()?\d{3}())?(-|\s)?\d{3}(-|\s)?\d{4}$/
El
?
carácter significa que el grupo anterior debe coincidir cero o una vez. El grupo(-|\s)
coincidirá con uno-
o un|
personaje.fuente
Tengo que aceptar que validar los números de teléfono es una tarea difícil. En cuanto a este problema específico, cambiaría la expresión regular de
a
Como el único elemento más que se vuelve innecesario es el último guión / espacio.
fuente
Si usa una etiqueta de entrada, este código lo ayudará. Escribo este código por mí mismo y creo que esta es una muy buena manera de usarlo en la entrada. pero puedes cambiarlo usando tu formato. Ayudará al usuario a corregir su formato en la etiqueta de entrada.
fuente
Solo quería agregar una solución específica para seleccionar números de teléfono no locales (tipos 800 y 900).
fuente
Este registro es adecuado para números de teléfono internacionales y múltiples formatos de números de teléfonos móviles.
Aquí está la expresión regular: / ^ (+ {1} \ d {2,3} \ s? [(] {1} \ d {1,3} [)] {1} \ s? \ D + | + \ d {2,3} \ s {1} \ d + | \ d +) {1} [\ s | -]? \ d + ([\ s | -]? \ d +) {1,2} $ /
Aquí está la función de JavaScript
Esto valida los siguientes formatos:
+44 07988-825 465 (con cualquier combinación de guiones en lugar de espacio excepto que solo un espacio debe seguir al +44)
+44 (0) 7988-825 465 (con cualquier combinación de guiones en lugar de espacios, excepto que no puede existir un guión directamente antes o después del (0) y el espacio antes o después del (0) no necesita existir)
123 456-789 0123 (con cualquier combinación de guiones en lugar de los espacios)
123-123 123 (con cualquier combinación de guiones en lugar de los espacios)
123 123456 (El espacio se puede reemplazar con un guión)
1234567890
No pueden existir espacios dobles ni guiones dobles para todos los formatos.
fuente
Validar número de teléfono + devolver datos formateados
fuente
prueba esto
formatos válidos
https://regex101.com/r/QXAhGV/1
fuente
{1}
Es inútil,{0,}
está mejor escrito*
. ¿Por qué usar todos estos grupos de captura? Retrasa el proceso.Esta función nos funcionó bien:
fuente
Expresión regular simple:
/\b\d{3}[-.]?\d{3}[-.]?\d{4}\b/g
Echa un vistazo al formato, espero que funcione:
444-555-1234
f: 246.555.8888
m: 1235554567
fuente
Esto validará cualquier número de teléfono de formato variable:
\\(?\d{3}\\)?
encuentra 3 dígitos encerrados entre paréntesis o no.([\-\s\.])?
encuentra cualquiera de estos caracteres separadores o no\d{3}
encuentra 3 dígitos\1
utiliza el primer separador coincidente: esto garantiza que los separadores sean iguales. Entonces (000) 999-5555 no se validará aquí porque hay un espacio y un separador de guiones, así que simplemente elimine "\ 1" y reemplácelo con el subpatrón separador (hacerlo también validará formatos no estándar). Sin embargo, debería estar formateando sugerencias para la entrada del usuario de todos modos.\d{4}
encuentra 4 dígitosValida:
Por cierto, esto es para JavaScript, por lo tanto, para dobles escapes.
fuente
Prueba esta función js. Devuelve verdadero si coincide y falso si falla Ref.
fuente
Solo ignora todo menos los dígitos.
Esto es lo que uso:
fuente
prueba esto
formatos válidos:
fuente