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:
- La vía se divide en una alternancia (
|). - La vía hace un bucle para un cuantificador (
*,+). - 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
- Probador de Regex: Prueba de regex en tiempo real con resaltado y depuración visual.
- Formateador JSON: Utiliza regex para buscar y filtrar tus grandes conjuntos de datos JSON.
- Convertidor de Mayúsculas/Minúsculas: Limpia tu texto antes de aplicar filtros de regex.