...
Contacto Contacto

Chuleta de regex: cada token explicado, con ejemplos para copiar

Regex Cheat Sheet: The Syntax That Matters, Ready Patterns, and the Bugs Everyone Hits Regex Cheat Sheet: The Syntax That Matters, Ready Patterns, and the Bugs Everyone Hits

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|b alternativa: «a o b»; usa paréntesis para limitar el alcance: gr(i|a)s
  • 1 retrorreferencia: (w)1 coincide 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

  1. Email (pragmático): ^[w.+-]+@[w-]+.[w.-]+$
  2. URL: https?://[^s/$.?#].[^s]*
  3. Fecha DD/MM/AAAA: ^(0[1-9]|[12]d|3[01])/(0[1-9]|1[0-2])/d{4}$
  4. Fecha ISO: ^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])$
  5. IPv4: ^((25[0-5]|2[0-4]d|1?d?d).){3}(25[0-5]|2[0-4]d|1?d?d)$
  6. Código postal español: ^(0[1-9]|[1-4]d|5[0-2])d{3}$
  7. Teléfono (laxo): ^+?[ds()/-]{7,}$
  8. Color hexadecimal: ^#([0-9a-fA-F]{3}){1,2}$
  9. Recortar espacios: ^s+|s+$ → reemplazar por nada
  10. Espacios dobles: {2,} → reemplazar por un espacio

Tres errores que comete todo el mundo

  1. Cuantificadores voraces con HTML o comillas: usa +?.
  2. Punto sin escapar: example.com también coincide con «exampleXcom».
  3. 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 $&.

Advertisement

Pruébalo ahora: Probador de regex

Gratis, funciona en tu navegador, no se sube nada, sin registro.

Abrir la herramienta →
Add a comment Add a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Submit Comment

Advertisement
Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.