regex cheat-sheet programming javascript python dev-tech

Hoja de Referencia de Regex: Guía Completa con Ejemplos Visuales

Una guía completa de referencia para expresiones regulares que incluye metacaracteres, cuantificadores, anclas, lookarounds y diagramas de ferrocarril. Ideal para desarrolladores y analistas de datos.

Hoja de Referencia de Regex: La Guía Definitiva

Las Expresiones Regulares (Regex) son increíblemente potentes pero famosas por ser difíciles de dominar. Ya sea que estés validando una dirección de correo electrónico, extrayendo datos o buscando en el código, tener una Hoja de Referencia de Regex fiable puede ahorrarte horas de frustración.

En esta guía, desglosamos cada componente de regex, desde los caracteres básicos hasta los complejos lookarounds, completados con explicaciones visuales y ejemplos prácticos.


1. Metacaracteres Principales

Estos son los bloques de construcción de cualquier patrón de regex.

Metacaracter Descripción Ejemplo
. Coincide con cualquier carácter individual excepto salto de línea a.b coincide con acb, a1b
\ Escapa un carácter especial \. coincide con un . literal
| Alternancia (OR) cat|dog coincide con cat o dog
[] Conjunto de caracteres (cualquier carácter interior) [aeiou] coincide con cualquier vocal
[^] Conjunto de caracteres negado [^0-9] coincide con cualquier no dígito

2. Cuantificadores: Control de Frecuencia

Los cuantificadores le dicen al motor de regex cuántas veces debe aparecer un carácter o grupo.

Cuantificador Descripción Ejemplo
* 0 o más veces a* coincide con ``, a, aa
+ 1 o más veces a+ coincide con a, aa
? 0 o 1 vez (opcional) a? coincide con `` o a
{n} Exactamente n veces a{3} coincide con aaa
{n,} n o más veces a{2,} coincide con aa, aaa
{n,m} Entre n y m veces a{2,4} coincide con aa, aaa, aaaa

3. Clases de Caracteres: Atajos Comunes

Clase Descripción Equivalente
\d Cualquier dígito [0-9]
\D Cualquier no dígito [^0-9]
\w Cualquier carácter de palabra (alfanumérico + _) [a-zA-Z0-9_]
\W Cualquier carácter que no sea de palabra [^a-zA-Z0-9_]
\s Cualquier espacio en blanco (espacio, tabulador, salto de línea) [ \t\n\r\f\v]
\S Cualquier no espacio en blanco [^ \t\n\r\f\v]

4. Anclas: Definiendo Límites

Ancla Descripción Ejemplo
^ Inicio de cadena / línea ^Hola
$ Fin de cadena / línea Mundo$
\b Límite de palabra \bcat\b (coincide con "cat" pero no con "category")
\B Límite de no palabra \Bcat (coincide con "category")

5. Grupos y Captura

Sintaxis Descripción Ejemplo
(...) Grupo de captura (abc)+ coincide con abcabc
(?:...) Grupo sin captura (?:abc)+
(?<name>...) Grupo de captura con nombre (?<id>\d+)
\1 Referencia retroactiva al grupo #1 (\w)\1 coincide con aa, bb

6. Lookaround: Filtrado Avanzado

Los lookarounds te permiten coincidir con un patrón solo si está (o no está) seguido o precedido por otro patrón, sin incluir ese otro patrón en la coincidencia.

Sintaxis Nombre Descripción
(?=...) Lookahead Positivo Seguido por ...
(?!...) Lookahead Negativo NO seguido por ...
(?<=...) Lookbehind Positivo Precedido por ...
(?<!...) Lookbehind Negativo NO precedido por ...

7. Visualización de Regex con Diagramas de Ferrocarril

Los patrones complejos de regex pueden volverse rápidamente ilegibles. Los Diagramas de Ferrocarril son una forma visual de representar el flujo de una expresión regular.

Imagina una vía de tren:

  1. La vía se divide en una alternancia (|).
  2. La vía hace un bucle para un cuantificador (*, +).
  3. La vía pasa a través de una caja de grupo.

Usar un visualizador te ayuda a depurar errores de lógica, especialmente cuando trabajas con grupos anidados o cuantificadores complejos.


8. Ejemplos Prácticos

Validación de Email (Simplificada)

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Contraseña Fuerte (Ejemplo de Lookahead)

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$ (Requiere al menos una minúscula, una mayúscula, un dígito y más de 8 caracteres)

Número de Teléfono (Formato US)

^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$


9. Preguntas Frecuentes (FAQ)

P: ¿Cuál es la diferencia entre coincidencia "Greedy" (Codiciosa) y "Lazy" (Perezosa)?

R: Por defecto, los cuantificadores son greedy (coinciden con la mayor cantidad posible). Añadir un ? después de un cuantificador (ej. .*?) lo hace lazy (coincide con la menor cantidad posible).

P: ¿Cómo realizo una búsqueda que no distinga entre mayúsculas y minúsculas?

R: La mayoría de los motores de regex utilizan un flag (normalmente i) para habilitar la insensibilidad a mayúsculas. Por ejemplo, /hola/i coincide con Hola, HOLA y hola.

P: ¿Qué es el backtracking y por qué es importante?

R: El backtracking ocurre cuando el motor de regex prueba un camino, falla y "retrocede" para probar otro. Los patrones complejos con muchos cuantificadores anidados pueden llevar al Backtracking Catastrófico, que puede congelar tu aplicación o servidor.


Prueba tus Patrones en Tool3M