Regex para validar teléfonos con separadores y extensiones

Clase 15 de 29Curso de Expresiones Regulares

Resumen

Los datos reales rara vez son limpios. Aquí aprenderás a diseñar expresiones regulares que validan números de teléfono con variantes reales: prefijo internacional, separadores, extensiones y pausas. Un enfoque práctico y planificado para evitar falsos positivos, limpiar la basura y ahorrar CPU.

¿Cómo validar teléfonos con expresiones regulares paso a paso?

Para teléfonos no controlamos el formato de entrada: pueden traer prefijo internacional, separadores variados o extensiones. A diferencia de los logs, donde la máquina escribe siempre igual, el usuario introduce datos con criterios propios. Por eso conviene pensar primero los casos y construir la regex de menos a más.

¿Qué formatos de teléfono se aceptan?

  • Dígitos continuos: seis, o agrupaciones como tres-tres-tres para nueve dígitos.
  • Prefijo internacional con símbolo de más escapado: puede estar al inicio o no.
  • Separadores opcionales entre parejas o tríos: guion, punto, espacio o guion bajo.
  • Extensiones y control de llamada: # (numeral), E (extensión) y P (pausa).
  • Pausas encadenadas: P de un segundo, luego dígito, luego nueva pausa, etc.
  • Variantes nacionales con o sin código de país.

¿Qué casos se descartan y por qué?

  • Cadenas con letras incrustadas sin sentido en el número. La línea cuarenta y siete, que incluye “Y” y “R”, se descarta por no ser formato válido.
  • Secuencias donde se exigen dígitos y no aparecen tras una E o P si así se definió.
  • Formas que no cumplen inicio y fin de línea cuando se requiere match completo.

¿Qué estrategia usar para construir una regex robusta?

Construye leyendo y verificando en “lenguaje humano” lo que la regex dice. Eso reduce errores y hace sostenible el patrón.

¿Cómo construir de lo simple a lo complejo?

  • Lista ejemplos válidos y algunos explícitamente no válidos. Úsalos como pruebas.
  • Empieza por lo esencial: “quiero dígitos”. Luego “uno o más dígitos”.
  • Añade finales opcionales: numeral, P o E. Verifica cada incremento.
  • Decide el esquema: parejas de dos, tríos de tres, o seis/nueve dígitos fijos.
  • Introduce separadores opcionales entre bloques (guion, punto, espacio, guion bajo).

¿Qué cuantificadores y anclajes aplicar?

  • Interrogación (?) para “cero o uno” del símbolo de más y de secciones opcionales.
  • Asterisco (*) cuando puede “haber o no haber” dígitos tras P/E.
  • Más (+) para “uno o más” dígitos donde no se aceptan vacíos.
  • Inicio y final de línea (anclajes) para exigir match de línea completa.

¿Cómo manejar caracteres especiales y separadores?

  • Escapa el símbolo de más al inicio para el código internacional.
  • Usa clases de caracteres para agrupar opciones: por ejemplo, [#pe] para numeral, p o e.
  • Evita que ciertos bloques terminen en separador: los separadores son para “entre dígitos”, no al final.
  • Cuando los separadores son opcionales, la regex debe tolerar con o sin ellos.

¿Qué habilidades y conceptos clave refuerzas?

El objetivo no es memorizar patrones, sino planear y razonar sobre datos ambiguos. Con eso obtienes una regex clara, mantenible y efectiva.

  • Planeación de casos: pensar “qué puede pasar” antes de codificar.
  • Lectura natural de la regex: validar que cada parte tiene sentido humano.
  • Clases de caracteres: definir conjuntos como dígitos, letras y separadores.
  • Cuantificadores (?, *, +): controlar opcionalidad y cantidad mínima.
  • Agrupación en parejas o tríos: dos-dos-dos o tres-tres-tres según el contexto.
  • Anclajes de línea: exigir match completo para evitar falsos positivos.
  • Escape de caracteres especiales: tratar correctamente el símbolo de más en prefijos.
  • Validación de extensiones: aceptar E y # como extensión cuando aplique.
  • Control de pausas: permitir P para automatizar interacción con conmutadores.
  • Limpieza de datos: usar la regex para separar basura de información útil.
  • Rendimiento: filtrar temprano ahorra tiempo humano y de CPU.
  • Iteración rápida: construir “bloque por bloque” y probar de inmediato.

¿Te gustaría compartir un caso de formato telefónico que te haya dado dolores de cabeza? Compártelo y lo integramos a un patrón robusto entre todos.