NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
Phone Number Regex Javascript Validator

Validador de Regex para Números de Teléfono en JavaScript

El Validador de Regex para Números de Teléfono en JavaScript le permite verificar al instante si una cadena sigue un formato de número de teléfono válido usando regex en JavaScript. Es ideal para formularios de contacto, flujos de registro o cualquier aplicación web que capture entradas de teléfono. Úselo junto con nuestro JavaScript Regex Tester para construir y refinar sus propios patrones, o combínelo con el Validador de Regex de Email en JavaScript para validación completa de formularios de contacto. También puede codificar los números validados usando el Codificador Base64 o generar tokens seguros para sistemas de inicio de sesión basados en teléfono con el Generador de token.

Validador de Regex para Números de Teléfono en JavaScript - Documentación

¿Qué es el Regex de Números de Teléfono?

El regex de números de teléfono es un patrón de expresión regular que verifica si una cadena coincide con un formato de número de teléfono válido. El patrón puede variar según:

  • Formato del país

  • Móvil vs. línea fija

  • Uso de símbolos como +, -, (, ) o espacios

Patrón Regex de Número de Teléfono en JavaScript

Regex básico para número de teléfono internacional:

/^\+?[0-9]{1,4}?[-.\s]?(\(?\d{1,5}?\)?)[-.\s]?\d{1,5}[-.\s]?\d{1,9}$/

Desglose del Patrón:

  • ^\+?: + opcional para código de país

  • [0-9]{1,4}?: Dígitos del código de país

  • [-.\s]?: Separador opcional

  • (\(?\d{1,5}?\)?): Código de área opcional con o sin paréntesis

  • \d{1,5}: Prefijo o sección del número

  • \d{1,9}: Parte final del número

  • $: Fin de la cadena

Al crear formularios para capturar números de teléfono, los usuarios pueden ingresarlos de muchas maneras diferentes. Por ejemplo, todos los siguientes son números válidos del estilo EE. UU.:

  • +1-202-555-0123

  • +44 20 7946 0958

  • (123) 456-7890

Ejemplo de Código 1: Validación Básica de Número de Teléfono

const phone = "+91-9876543210";
const pattern = /^\+?[0-9]{1,4}?[-.\s]?(\(?\d{1,5}?\)?)[-.\s]?\d{1,5}[-.\s]?\d{1,9}$/;

console.log(pattern.test(phone)); // true

Ejemplo de Código 2: Validar Múltiples Números

const numbers = ["+1 800-123-4567", "1234567890", "(011) 2345 6789"];

const pattern = /^+?[0-9]{1,4}?[-.\s]?((?\d{1,5}?)?)[-.\s]?\d{1,5}[-.\s]?\d{1,9}$/;

numbers.forEach(num => { console.log(${num} → ${pattern.test(num)}); });

Cubre una Amplia Gama de Formatos

El patrón regex anterior es suficientemente versátil para coincidir con una variedad de estilos de números de teléfono del mundo entero, incluyendo formatos internacionales con o sin el símbolo más, formatos EE. UU. y locales, y números con códigos de área entre paréntesis.

Ejemplo de Código 3: Validar Entrada en un Formulario Web

<input type="text" id="phoneInput" placeholder="Ingrese su número de teléfono" />
<p id="status"></p>

<script> const pattern = /^+?[0-9]{1,4}?[-.\s]?((?\d{1,5}?)?)[-.\s]?\d{1,5}[-.\s]?\d{1,9}$/;

document.getElementById("phoneInput").addEventListener("input", function () { const isValid = pattern.test(this.value.trim()); document.getElementById("status").textContent = isValid ? "Número válido" : "Número inválido"; }); </script>

Por Qué Algunos Números de Teléfono Fallan la Validación

Algunos regex requieren que los separadores entre grupos de números, como espacios, guiones o puntos, sean consistentes a lo largo del número de teléfono. Para permitir separadores mixtos, ajuste el patrón de forma que cada posición de separador se coincida de forma independiente.

Cómo el Backreferencing (\1) Mantiene Consistentes los Separadores

Los backreferences como \1 imponen consistencia dentro de la cadena coincidente. Si se captura un separador con ([-\s.])?, luego \1 exige que el mismo separador se repita más adelante en el patrón. Esto garantiza que si se usa un guión, solo se permitan guiones en las siguientes secciones.

Requisitos de Longitud de Dígitos por País

Al validar números de teléfono, es importante considerar los requisitos específicos de cada país:

  • Argentina: Entre 8 y 13 dígitos en total, o formatos divididos con guiones.

  • Estados Unidos: Al menos 10 dígitos (sin contar el código de país).

  • Unión Europea: Muchos países usan 9 dígitos para números locales.

  • India: Exactamente 10 dígitos, generalmente con el código de país +91.

  • China: Normalmente 10 u 11 dígitos, con el código de país +86 en formatos internacionales.

Validar Números de Teléfono con Códigos de País Usando Listas ISD

Para garantizar que un número de teléfono incluya un código de país válido, puede combinar regex con un arreglo de códigos ISD. Extraiga los dígitos de la entrada, verifique que la longitud sea razonable (entre 8 y 16 dígitos), aísle los dígitos iniciales como código ISD potencial y compárelos con una lista predefinida de códigos ISD válidos.

Manejo de Códigos de País Opcionales y Separadores

Para manejar números que pueden o no comenzar con un código de país como 1, use grupos y cuantificadores opcionales:

^(1[ -]?)?

Combinado con el patrón estándar de número de teléfono de EE. UU.:

/^(1[ -]?)?\d{3}[ -]?\d{3}[ -]?\d{4}$

Esto coincide con:

  • 1-800-123-4567

  • 1 800 123 4567

  • 800-123-4567

Validación Estricta vs. Flexible de Números de Teléfono en JavaScript

La validación flexible acepta una amplia variedad de formatos: diferentes separadores, paréntesis o con/sin código de país. Reduce la fricción en formularios de registro. La desventaja es que puede no detectar errores tipográficos o números mal formados.

La validación estricta impone un formato preciso, lo que garantiza datos limpios y predecibles, ideal antes de almacenar números en bases de datos o integrarse con servicios como Twilio. Sin embargo, puede resultar restrictiva para usuarios que no conocen el formato esperado.

En la práctica, muchos desarrolladores encuentran un equilibrio: permiten entradas flexibles y normalizan el número antes de guardarlo o procesarlo.

Consejos para Validación Flexible y Confiable

En lugar de centrarse en formatos específicos, considere validar el contenido numérico directamente:

var originalPhoneNumber = "415-555-1212";
function isValid(p) { var phoneRe = /^[2-9]\d{2}[2-9]\d{2}\d{4}$/; var digits = p.replace(/\D/g, ""); return phoneRe.test(digits); }

Consejos Avanzados

  • Siempre use .trim() en la entrada para eliminar espacios en blanco accidentales del usuario.

  • Si solo necesita números móviles indios, simplifique el regex a: /^[6-9]\d{9}$/

  • Si necesita exactamente 10 dígitos, ignore todo excepto los dígitos: return value.match(/\d/g).length === 10;

  • Use patrones más específicos por país para números locales.

  • Evite permitir cualquier carácter excepto dígitos, +, -, (, ) y espacios.

  • Para aplicaciones globales, pruebe con una variedad de formatos internacionales.

  • Considere integrar bibliotecas como libphonenumber para validación más profunda.

Casos de Uso

  • Formularios de Registro: Valide al instante los números de teléfono ingresados por el usuario.

  • Sistemas CRM: Filtre y limpie números de teléfono antes de agregar a la base de datos.

  • Automatización de Marketing: Garantice números precisos antes de enviar campañas SMS.

  • Aplicaciones de Reservas: Evite entradas de usuario inválidas en formularios y flujos de devolución de llamada.

Combine con Estas Herramientas

Frequently Asked Questions

¿Puede este regex validar todos los formatos globales?

Cubre muchos formatos, pero ciertos países pueden requerir patrones personalizados.

¿Verifica si el número está activo?

No. El regex solo verifica el formato. Para verificación en tiempo real, integre servicios de OTP por SMS.

¿Por qué se permiten paréntesis?

Porque muchos usuarios formatean los códigos de área como (123), lo cual es válido en regex.

¿Es obligatorio el signo más (+)?

Es opcional. El patrón funciona con o sin él, dependiendo del número.

¿Cuál es la mejor manera de limpiar la entrada del usuario antes del regex?

Use .trim() y opcionalmente .replace(/\s/g, "") para eliminar espacios adicionales.

¿Cómo puedo crear una expresión regular que solo permita ciertos caracteres (dígitos, +, (), -, . y espacios) en números de teléfono?

Use este patrón: /[^0-9+() -.]/g. Coincide con cualquier carácter que no sea dígito, más, paréntesis, espacio, punto o guión, ayudándole a identificar y eliminar rápidamente símbolos no deseados de la entrada del usuario.

¿Por qué es importante personalizar el recuento mínimo y máximo de dígitos para la validación de números de teléfono según el país?

Validar números de teléfono va más allá de coincidir con un patrón. Los formatos del mundo real difieren ampliamente entre regiones. Por ejemplo, los números de EE. UU. generalmente requieren al menos 10 dígitos, muchos formatos europeos usan 9 dígitos, y en países como India y China los números pueden tener 10 u 11 dígitos después del código de país.

¡Pruebe sus APIs hoy!

Escriba en español simple, Qodex lo convierte en pruebas seguras y listas para ejecutar.