desarrolloregexproductividad

Chuleta de regex: 20 expresiones de uso diario

Las expresiones regulares son una de las herramientas más potentes que existen y también de las peor entendidas. Aquí tienes los 20 patrones a los que vas a recurrir una y otra vez, explicados en lenguaje llano.

·8 min de lectura

Por qué merece la pena aprender regex

Las expresiones regulares te permiten localizar, extraer y sustituir patrones de texto con una sola línea de código. En cuanto dominas la sintaxis básica, escribes mucho menos código propio para analizar cadenas y usas grep, sed y el buscar y reemplazar de tu editor con muchísima más precisión.

La sintaxis esencial en 2 minutos

  • .: cualquier carácter (menos el salto de línea)
  • *: cero o más veces lo anterior
  • +: una o más veces lo anterior
  • ?: cero o una vez (hace opcional lo anterior)
  • ^: principio de la cadena (o de la línea en modo multilínea)
  • $: final de la cadena (o de la línea en modo multilínea)
  • [abc]: clase de caracteres, es decir a, b o c
  • [^abc]: clase negada, cualquier cosa menos a, b o c
  • (grupo): grupo de captura
  • (?:grupo): grupo sin captura
  • a|b: alternancia, a o b
  • \d: dígito [0-9]
  • \w: carácter de palabra [a-zA-Z0-9_]
  • \s: espacio en blanco
  • {n,m}: entre n y m repeticiones

Los 20 patrones

**1. Dirección de correo** [a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}

**2. URL (http o https)** https?://[^\s<>"{}|\\^]+

**3. Dirección IPv4** \b(?:\d{1,3}\.){3}\d{1,3}\b

**4. Dirección IPv6 (comprimida)** ([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}

**5. Color hexadecimal** #(?:[0-9a-fA-F]{3}){1,2}\b

**6. Número de teléfono (formato estadounidense)** (?:\+1)?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}

**7. Fecha (AAAA-MM-DD)** \b\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])\b

**8. Hora (HH:MM o HH:MM:SS)** \b([01]\d|2[0-3]):[0-5]\d(:[0-5]\d)?\b

**9. Número de tarjeta de crédito** \b(?:\d{4}[\s-]?){3}\d{4}\b

**10. Código postal (formato estadounidense)** \b\d{5}(?:-\d{4})?\b

**11. Versión semántica** \bv?\d+\.\d+\.\d+(?:-[\w.]+)?\b

**12. Etiqueta HTML** <[^>]+>

**13. Comentario HTML** <!--[\s\S]*?-->

**14. Clase CSS** \.([a-zA-Z_][\w-]*)

**15. Nombre de variable de JavaScript** \b(?:const|let|var)\s+([a-zA-Z_$][\w$]*)

**16. Encabezado de Markdown** ^#{1,6}\s+(.+)$ (con la marca de multilínea activada)

**17. Valor de cadena en JSON** "([^"\\]|\\.)*"

**18. Importe en dólares** \$\d{1,3}(?:,\d{3})*(?:\.\d{2})?

**19. Nivel de registro** \b(DEBUG|INFO|WARN(?:ING)?|ERROR|CRITICAL|FATAL)\b

**20. UUID v4** [0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}

Probar patrones sin riesgo

Pega cualquier patrón en el probador de expresiones regulares de NoxaKit y verás las coincidencias resaltadas en vivo mientras escribes. El extractor con regex te deja aplicar un patrón sobre un bloque de texto y sacar todas las coincidencias, muy útil para extraer datos sin tener que escribir Python ni JavaScript.

Errores habituales

**Olvidarse de escapar los puntos**: dentro de una clase de caracteres el . no necesita escaparse, pero fuera de ella coincide con *cualquier* carácter. Escribe \. cuando quieras decir un punto literal.

**Codicioso frente a perezoso**: .* coge todo lo que puede y .*? lo menos posible. Esto importa mucho con las etiquetas HTML: <.*> se come la línea entera, mientras que <.*?> coincide con una sola etiqueta.

**Anclar el patrón**: sin ^ y $, un patrón coincide en cualquier punto de la cadena. Pon anclas cuando quieras validar un valor completo y no solo encontrarlo dentro de un texto más largo.

Prueba estas herramientas gratuitas

Más artículos