Las expresiones regulares son una de las pocas habilidades que funcionan en cualquier lenguaje y editor, y una de las pocas que hay que volver a consultar cada seis meses. Esta chuleta explica cada token en una frase, añade un ejemplo y termina con los patrones más usados en el día a día. Todos los ejemplos se pueden pegar directamente en el probador de regex.
Bloques básicos de una regex
| Token | Significado | Ejemplo |
|---|---|---|
. | Cualquier carácter salvo salto de línea | a.c coincide con «abc», «a1c» |
d w s | Dígito, carácter de palabra (a–z, 0–9, _), espacio | ddd coincide con «123» |
D W S | Lo contrario de cada uno | D+ coincide con «abc» |
b | Límite de palabra | besb coincide con «es», no con «mesa» |
^ $ | Inicio / fin (de línea con el flag m) | ^Hola |
| Escapar caracteres especiales | . coincide con un punto real |
Clases de caracteres
[abc]uno de a, b, c[^abc]cualquier carácter salvo a, b, c[a-z],[0-9],[A-Za-zÁÉÍÓÚáéíóúÑñ]rangos; los acentos y la ñ hay que incluirlos explícitamente- Dentro de los corchetes la mayoría de los especiales pierden su significado:
[.]es un punto real
Cuantificadores
| Token | Significado |
|---|---|
* | 0 o más |
+ | 1 o más |
? | 0 o 1 |
{3} {2,5} {2,} | exactamente 3, de 2 a 5, al menos 2 |
*? +? ?? | «perezoso»: lo menos posible |
El clásico: <.+> sobre «<b>negrita</b>» coincide con toda la cadena porque + es voraz. <.+?> solo coincide con «<b>».
Grupos
(abc)grupo de captura: el resultado está disponible como $1, $2…(?:abc)grupo sin captura: solo agrupa, más rápido(?<anio>d{4})grupo con nombre: en el reemplazo, $<anio>a|balternativa: «a o b»; usa paréntesis para limitar el alcance:gr(i|a)s1retrorreferencia:(w)1coincide con letras dobles como «ll»
Lookarounds
| Token | Significado | Ejemplo |
|---|---|---|
(?=x) | seguido de x (no forma parte de la coincidencia) | d+(?= €) coincide con «49» en «49 €» |
(?!x) | no seguido de x | bfoo(?!bar) |
(?<=x) | precedido de x | (?<=€)d+ |
(?<!x) | no precedido de x | (?<!d)d{4}(?!d): exactamente cuatro dígitos |
Flags
- g todas las coincidencias en vez de la primera
- i ignorar mayúsculas
- m ^ y $ actúan por línea
- s . también coincide con saltos de línea
- u Unicode: necesario para emojis y p{L}
- y «sticky»: solo en la posición actual
Los diez patrones que siempre hacen falta
- Email (pragmático):
^[w.+-]+@[w-]+.[w.-]+$ - URL:
https?://[^s/$.?#].[^s]* - Fecha DD/MM/AAAA:
^(0[1-9]|[12]d|3[01])/(0[1-9]|1[0-2])/d{4}$ - Fecha ISO:
^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])$ - IPv4:
^((25[0-5]|2[0-4]d|1?d?d).){3}(25[0-5]|2[0-4]d|1?d?d)$ - Código postal español:
^(0[1-9]|[1-4]d|5[0-2])d{3}$ - Teléfono (laxo):
^+?[ds()/-]{7,}$ - Color hexadecimal:
^#([0-9a-fA-F]{3}){1,2}$ - Recortar espacios:
^s+|s+$→ reemplazar por nada - Espacios dobles:
{2,}→ reemplazar por un espacio
Tres errores que comete todo el mundo
- Cuantificadores voraces con HTML o comillas: usa
+?. - Punto sin escapar:
example.comtambién coincide con «exampleXcom». - Olvidar el flag g y preguntarse por qué solo se reemplaza la primera coincidencia.
Reemplazar con grupos
Patrón (w+)@(w+).es, reemplazo $2:$1 convierte «ana@empresa.es» en «empresa:ana». Grupos con nombre: $<nombre>. La coincidencia completa es $&.
Pruébalo ahora: Probador de regex
Abrir la herramienta →Gratis, funciona en tu navegador, no se sube nada, sin registro.
Sigue leyendo
Más de Herramientas para desarrolladores.

Minificar CSS y JavaScript: qué ahorra, cuándo rompe cosas y cómo hacerlo con seguridadHerramientas para desarrolladores

¿Qué tan fuerte debe ser una contraseña? Descifrado, entropía y lo que funciona de verdadHerramientas para desarrolladores

Cómo comprobar las cabeceras de seguridad HTTP y arreglar las seis que importanHerramientas para desarrolladores