/ /

Referencia rápida — clic para insertar

¿Qué es una expresión regular?

Una expresión regular (regex o regexp) es una secuencia de caracteres que define un patrón de búsqueda. Se utilizan para búsqueda de cadenas, validación, extracción de texto y reemplazo. Las regex son compatibles con prácticamente todos los lenguajes de programación y son una herramienta esencial para cualquier desarrollador que trabaje con procesamiento de texto.

Referencia rápida de sintaxis regex

  • . — Coincide con cualquier carácter excepto nueva línea
  • ^ / $ — Inicio / fin de cadena (o línea en modo multilínea)
  • * / + / ? — 0 o más / 1 o más / 0 o 1
  • {n,m} — Entre n y m repeticiones
  • [abc] — Clase de caracteres — coincide con a, b o c
  • [^abc] — Clase de caracteres negada
  • (abc) — Grupo de captura
  • (?:abc) — Grupo sin captura
  • \d / \w / \s — Dígito / carácter de palabra / espacio en blanco
  • a|b — Alternancia — coincide con a o b

Patrones regex comunes

  • Email: [\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
  • URL: https?://[\w\-._~:/?#[\]@!$&'()*+,;=%]+
  • IPv4: (\d{1,3}\.){3}\d{1,3}
  • Teléfono (US): (\+1\s?)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}
  • Color hex: #([a-fA-F0-9]{6}|[a-fA-F0-9]{3})
  • Fecha (YYYY-MM-DD): \d{4}-\d{2}-\d{2}

Preguntas frecuentes sobre expresiones regulares

¿Cuál es la diferencia entre .* y .+ en regex?

El asterisco (*) significa "cero o más" del elemento anterior, mientras que el signo más (+) significa "uno o más." El patrón .* coincide con cualquier cadena incluyendo cadenas vacías, mientras que .+ requiere al menos un carácter. Ambos son codiciosos por defecto — coinciden con la mayor cantidad posible. Agregue ? para hacerlos perezosos (coincidir con lo mínimo posible): .*? y .+?.

¿Qué hacen los flags de regex g, i, m y s?

El flag g (global) encuentra todas las coincidencias en lugar de detenerse después de la primera. El flag i hace que la coincidencia sea insensible a mayúsculas. El flag m (multilínea) hace que ^ y $ coincidan con el inicio y fin de cada línea en lugar de toda la cadena. El flag s (dotAll) hace que el punto coincida con caracteres de nueva línea. Combine flags según necesite: /patrón/gim.

¿Cómo coincido con un punto literal, paréntesis u otros caracteres especiales?

Escape los caracteres especiales de regex con una barra invertida. Un punto literal es . (sin la barra invertida, el punto coincide con cualquier carácter). Un paréntesis literal es ( y ). Otros caracteres que necesitan escape: ^ $ | ? * + { } [ ]. Por ejemplo, para coincidir con la URL example.com literalmente, escriba /example.com/ — de lo contrario, el punto coincidiría con cualquier carácter.

¿Cuál es la diferencia entre un cuantificador codicioso y uno perezoso?

Los cuantificadores codiciosos (*, +, {n,m}) intentan coincidir con la mayor cantidad posible mientras permiten que el patrón general coincida. Los cuantificadores perezosos (no codiciosos) (*?, +?, {n,m}?) coinciden con la menor cantidad posible. Por ejemplo, dado <b>negrita</b>, el codicioso /<.*>/ coincide con toda la cadena, mientras que el perezoso /<.*?>/ coincide solo con <b>.

Herramientas relacionadas para desarrolladores