ToolHub
View All Posts

Hoja de referencia de expresiones regulares y patrones comunes

Las expresiones regulares, o regex, son herramientas poderosas de coincidencia de patrones utilizadas en prácticamente todos los lenguajes de programación y editores de texto. Aunque la sintaxis puede parecer críptica a primera vista, dominar el regex te permite buscar, validar, extraer y transformar texto con una precisión que requeriría docenas de líneas de código procedural. Esta guía cubre la sintaxis esencial, patrones comunes y consejos prácticos que necesitas conocer.

Hoja de referencia de sintaxis básica de regex

Clases de caracteres

PatrónSignificadoEjemplo
.Cualquier carácter excepto nueva líneaa.c coincide con abc, a1c, a c
\dCualquier dígito (0-9)\d\d coincide con 42
\DCualquier no dígito\D coincide con a, !, espacio
\wCarácter de palabra (a-z, A-Z, 0-9, _)\w+ coincide con hello_123
\WNo carácter de palabra\W coincide con @, #, espacio
\sCarácter de espacio en blanco (espacio, tabulación, nueva línea)a\sb coincide con a b
\SNo espacio en blanco\S+ coincide con hello
[abc]Cualquier carácter del conjunto[aeiou] coincide con vocales
[^abc]Cualquier carácter no en el conjunto[^0-9] coincide con no dígitos
[a-z]Rango de caracteres[A-Za-z] coincide con cualquier letra

Cuantificadores

PatrónSignificadoEjemplo
*Cero o más vecesab*c coincide con ac, abc, abbc
+Una o más vecesab+c coincide con abc, abbc
?Cero o una vezcolou?r coincide con color, colour
{n}Exactamente n veces\d{4} coincide con 4 dígitos
{n,}n o más veces\d{2,} coincide con 2 o más dígitos
{n,m}n a m veces\d{3,5} coincide con 3-5 dígitos

Anclas y límites

PatrónSignificadoEjemplo
^Inicio de cadena o línea^Hello coincide con Hello al inicio
$Fin de cadena o líneaworld$ coincide con world al final
\bLímite de palabracat coincide con cat como palabra independiente
\BNo límite de palabra\Bcat coincide con scattered

Agrupación y alternancia

PatrónSignificadoEjemplo
(abc)Grupo de captura(ab)+ coincide con abab
(?:abc)Grupo no capturador(?:ab)+ coincide con abab
a|bAlternancia (OR)cat|dog coincide con cat o dog
\1Referencia inversa al grupo 1(\w) coincide con aa, bb
abc)Grupo de captura nombradoReferenciado por name

Patrones comunes de expresiones regulares

Aquí están los patrones regex más comúnmente utilizados en desarrollo web y validación de datos:

Validación de correo electrónico

Un regex de correo electrónico práctico que captura la mayoría de las direcciones inválidas sin ser demasiado estricto: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$. Este patrón valida la estructura básica del correo electrónico mientras permite caracteres comunes en la parte local y requiere un nombre de dominio válido con un TLD de al menos dos caracteres.

Validación de URL

Coincide con URLs HTTP y HTTPS: ^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$. Este patrón coincide con URLs con prefijo www opcional, nombre de dominio y ruta opcional.

Número de teléfono (EE. UU.)

Varios formatos de números de teléfono de EE. UU.: ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$. Este patrón maneja formatos como (555) 123-4567, 555-123-4567 y 5551234567.

Dirección IP (IPv4)

Valida direcciones IPv4: ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$. Este patrón asegura que cada octeto esté entre 0 y 255.

Fecha (YYYY-MM-DD)

Formato de fecha ISO: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$. Este patrón valida la estructura del formato pero no verifica fechas válidas por mes.

Código de color hexadecimal

Coincide con colores hexadecimales CSS: ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$. Este patrón coincide con los formatos abreviado de 3 dígitos (#fff) y completo de 6 dígitos (#ffffff).

Técnicas avanzadas

Lookahead y lookbehind

Las aserciones de lookahead y lookbehind te permiten coincidir con un patrón solo cuando está seguido (o precedido) por (o no por) otro patrón, sin incluir el texto circundante en el resultado de la coincidencia.

Coincidencia codiciosa vs. perezosa

<.*>bold<.*?>".

Consejo profesional: Usa siempre cuantificadores perezosos al extraer contenido entre delimitadores como etiquetas HTML o comillas para evitar coincidir con demasiado texto. La coincidencia codiciosa es la fuente más común de errores de regex.

Consejos de rendimiento de regex

Prueba y depuración de regex

Siempre prueba tus patrones regex con entradas del mundo real antes de implementarlos. Usa un probador de regex interactivo que resalte las coincidencias en tiempo real y explique cada parte de tu patrón. Esto te ayuda a detectar casos límite y entender por qué tu patrón coincide o no con entradas específicas. Prueba nuestro probador de regex gratuito para construir y probar tus patrones de forma interactiva.

Usa nuestras herramientas gratuitas para construir, probar y depurar tus patrones de expresiones regulares.

Prueba el probador de regexHoja de referencia de regex

Preguntas frecuentes

¿Cuál es la diferencia entre coincidencia regex codiciosa y perezosa?

Los cuantificadores codiciosos coinciden con la mayor cantidad de texto posible, mientras que los cuantificadores perezosos coinciden con la menor cantidad posible. Agregar un signo de interrogación después de un cuantificador lo hace perezoso. Por ejemplo, .* coincide con la cadena más larga posible, mientras que .*? coincide con la más corta.

¿Es el regex igual en todos los lenguajes de programación?

No, las implementaciones de regex varían según el lenguaje. La mayoría soporta la sintaxis POSIX básica, pero las características avanzadas como lookbehind, grupos nombrados y soporte Unicode difieren. JavaScript históricamente tenía soporte limitado de regex pero ha agregado muchas características en los últimos años.

¿Puede el regex analizar HTML o XML?

No, el regex no puede analizar HTML o XML de manera confiable porque son lenguajes libres de contexto anidados. El regex no tiene concepto de profundidad de anidamiento o etiquetas balanceadas. Usa un analizador HTML o XML adecuado. El regex puede extraer patrones simples de HTML pero fallará en estructuras complejas.

¿Qué son lookahead y lookbehind en regex?

<=pattern) es lookbehind positivo, coincide si el patrón está detrás. Las versiones negativas usan ! en lugar de =.

¿Cómo hacer que una expresión regular no distinga entre mayúsculas y minúsculas?

Agrega el flag i después del delimitador de cierre para hacer que todo el patrón sea insensible a mayúsculas. En JavaScript, usa /pattern/i. En Python, usa re.IGNORECASE o re.I como flag. También puedes usar (?i) en línea para hacer que partes específicas sean insensibles a mayúsculas.

ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.