Saltar al contenido
Toolbrik
Volver al blog

Regex para el día a día: los patrones que se repiten siempre

Actualizado el 2 min de lecturaHerramienta relacionada: Probador de Expresiones Regulares

Las expresiones regulares tienen fama de crípticas, pero el 90 % del uso real se reduce a un puñado de patrones que se repiten en cualquier proyecto: validar un email, extraer una URL, limpiar espacios duplicados. El resto es buscar en Google cuando aparece el caso raro.

Prueba antes de pegar en producción

Antes de meter una regex en tu código, pruébala contra varios casos reales — incluidos los que no deberían coincidir — en el probador de expresiones regulares. Te resalta cada coincidencia y los grupos capturados, así ves de inmediato si el patrón es demasiado permisivo o demasiado estricto.

Los patrones que usarás siempre

  • Email (validación básica): ^[^\s@]+@[^\s@]+\.[^\s@]+$ — no cubre el 100% del RFC, pero es suficiente para formularios.
  • Solo dígitos: ^\d+$
  • Espacios duplicados: \s{2,} — útil para limpiar texto pegado de un PDF o Word.
  • URL con protocolo: ^https?:\/\/[^\s]+$
  • Fecha ISO (YYYY-MM-DD): ^\d{4}-\d{2}-\d{2}$
  • Slug (minúsculas y guiones): ^[a-z0-9]+(-[a-z0-9]+)*$

Los errores más comunes

  1. Olvidar escapar el punto. . significa "cualquier carácter", no un punto literal. Para un dominio, es \. no ..
  2. Codicia por defecto. <.+> sobre <b>negrita</b> captura desde el primer < hasta el último >, no solo una etiqueta. Usa el cuantificador perezoso <.+?> para pararte en el primer cierre.
  3. No anclar el patrón. Sin ^ y $, tu regex puede hacer match con una parte de la cadena y dejar pasar basura antes o después.
  4. Confundir [abc] con (abc). Lo primero es "una de estas tres letras"; lo segundo es "la secuencia exacta abc" como grupo.

Grupos con nombre, tu mejor amigo

Cuando extraes varios valores de una cadena (por ejemplo, partes de una URL o una fecha), usa grupos con nombre en vez de contarlos por posición: (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}). El código que consume el resultado se vuelve mucho más legible que match[1], match[2], match[3].

La chuleta corta: escribe el patrón, pruébalo contra casos límite reales, y solo entonces lo pegas en el código.

Preguntas frecuentes

¿Cómo valido un correo electrónico con regex?

Una expresión simple como ^[^\s@]+@[^\s@]+\.[^\s@]+$ detecta errores obvios. Validar todo lo que permite el estándar con regex es impracticable; la verificación real es enviar un correo de confirmación.

¿Qué significa el modificador g?

Busca todas las coincidencias en lugar de detenerse en la primera. Con funciones como match o replace, cambia el resultado de forma importante, así que comprueba si lo necesitas.

¿Por qué mi regex funciona en la herramienta y no en mi lenguaje?

Cada lenguaje tiene su propio dialecto: lookbehind, grupos con nombre, propiedades Unicode o escapes pueden variar. Esta herramienta usa el motor de JavaScript.

¿Cómo evito que una regex sea lenta?

Evita cuantificadores anidados, como (a+)+, y patrones ambiguos con .* repetidos. Ancla la expresión con ^ y $ cuando proceda y limita la longitud de la entrada.