Las expresiones regulares (regex) son un lenguaje para describir patrones de texto: buscar, validar y reemplazar. Son potentísimas pero su sintaxis cripta asusta. Esta chuleta reúne todo lo esencial con ejemplos, para que dejes de buscar en Google "cómo hago un regex de email" cada vez.
Metacaracteres básicos
| Símbolo | Significa | Ejemplo |
|---|---|---|
. |
Cualquier carácter (menos salto de línea) | a.c → "abc", "axc" |
\ |
Escapa un carácter especial | \. → un punto literal |
| |
O (alternativa) | gato|perro |
^ |
Inicio de línea | ^Hola |
$ |
Fin de línea | fin$ |
Clases de caracteres
| Patrón | Coincide con |
|---|---|
[abc] |
Una a, b o c |
[^abc] |
Cualquier carácter que NO sea a, b ni c |
[a-z] |
Cualquier minúscula |
[A-Z] |
Cualquier mayúscula |
[0-9] |
Cualquier dígito |
[a-zA-Z0-9] |
Letras y números |
Clases predefinidas (atajos)
| Atajo | Equivale a | Significa |
|---|---|---|
\d |
[0-9] |
Un dígito |
\D |
[^0-9] |
Lo que NO es dígito |
\w |
[a-zA-Z0-9_] |
Carácter de palabra |
\W |
[^a-zA-Z0-9_] |
Lo que NO es palabra |
\s |
espacio, tab, salto | Espacio en blanco |
\S |
— | Lo que NO es espacio |
Cuantificadores (cuántas veces)
| Símbolo | Significa | Ejemplo |
|---|---|---|
* |
0 o más | a* |
+ |
1 o más | a+ |
? |
0 o 1 (opcional) | colou?r → "color" o "colour" |
{n} |
Exactamente n | \d{4} → 4 dígitos |
{n,} |
n o más | \d{2,} |
{n,m} |
Entre n y m | \d{2,4} |
Por defecto los cuantificadores son codiciosos (cogen lo máximo). Añade ? para hacerlos perezosos (lo mínimo): .*?.
Anclas y límites
| Patrón | Significa |
|---|---|
^ |
Inicio de cadena/línea |
$ |
Fin de cadena/línea |
\b |
Límite de palabra |
\B |
NO límite de palabra |
\bcasa\b encuentra "casa" como palabra completa, no dentro de "casamiento".
Grupos y captura
| Patrón | Significa |
|---|---|
(abc) |
Grupo de captura |
(?:abc) |
Grupo SIN capturar |
(?<nombre>abc) |
Grupo con nombre |
\1 |
Referencia al grupo 1 |
Los grupos sirven para extraer partes ((\d{4})-(\d{2}) captura año y mes por separado) y para aplicar cuantificadores a varios caracteres: (ab)+.
Lookarounds (mirar alrededor sin consumir)
| Patrón | Significa |
|---|---|
(?=...) |
Lookahead positivo (seguido de) |
(?!...) |
Lookahead negativo (NO seguido de) |
(?<=...) |
Lookbehind positivo (precedido de) |
(?<!...) |
Lookbehind negativo |
Ejemplo: \d+(?= €) captura el número solo si va seguido de " €", sin incluir el símbolo.
Flags (modificadores)
| Flag | Efecto |
|---|---|
g |
Global (todas las coincidencias, no solo la primera) |
i |
Ignora mayúsculas/minúsculas |
m |
Multilínea (^ y $ por línea) |
s |
. también coincide con saltos de línea |
Patrones listos para usar
Email (simple): ^[\w.+-]+@[\w-]+\.[\w.-]+$
Teléfono ES: ^(\+34)?[\s-]?[6789]\d{8}$
URL: ^https?:\/\/[^\s]+$
Código postal ES: ^\d{5}$
Solo números: ^\d+$
Fecha YYYY-MM-DD: ^\d{4}-\d{2}-\d{2}$
Hex color: ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
Espacios extra: \s{2,}
Nota: validar emails con regex de forma 100% perfecta es casi imposible (el estándar es muy complejo). Para la mayoría de casos, el patrón simple de arriba es suficiente.
Consejo: prueba siempre tu regex
Una regex puede parecer correcta y fallar en casos límite. La mejor forma de afinarla es probarla con texto real y ver qué captura. Puedes hacerlo al instante con el probador de regex de esta web, que resalta las coincidencias mientras escribes el patrón.
Errores comunes
- Olvidar escapar caracteres especiales: para buscar un punto literal usa
\., no.. - Codicia inesperada:
<.*>en<a><b>captura todo de una; usa<.*?>para parar en el primer>. - No usar la flag
gcuando quieres todas las coincidencias. - Anclar mal: sin
^y$, un patrón puede coincidir con una parte cuando querías la cadena entera.
Conclusión
Las regex parecen jeroglíficos hasta que entiendes que son piezas combinables: clases, cuantificadores, anclas y grupos. Con esta chuleta tienes el vocabulario completo y patrones listos. Guárdala, y cuando construyas uno nuevo, pruébalo siempre con texto real antes de confiar en él.