Qué son las expresiones regulares (Regex)
Las expresiones regulares (Regex) son un lenguaje de patrones utilizado para buscar, validar y procesar texto.
Con regex puedes:
encontrar fragmentos específicos de texto (por ejemplo, correos electrónicos, URLs, números)
validar formatos de datos (validación de formularios)
reemplazar y limpiar texto
extraer datos estructurados de cadenas
Regex se utiliza ampliamente en desarrollo, analítica de datos, SEO y automatización.
Qué hace la herramienta “Regex Tester”
Esta herramienta permite probar expresiones regulares en tiempo real y ver inmediatamente los resultados.
Con ella puedes:
comprobar si una cadena coincide con un patrón
ver todas las coincidencias dentro de un texto
depurar expresiones complejas
probar diferentes variantes de regex sin escribir código
Motores de Regex populares y sus diferencias
Las expresiones regulares no son completamente universales. El soporte de sintaxis depende del lenguaje de programación y del motor utilizado.
Motor | Uso | Características |
|---|
JavaScript (ECMAScript) | Navegadores, Node.js | Lookbehind limitado (depende de la versión) |
PCRE | PHP, muchas herramientas | Uno de los motores más potentes |
Python (re) | Python | Carece de algunas funciones de PCRE |
Java (Pattern) | Java | Sintaxis estricta |
.NET | C# | Capacidades extendidas |
Siempre prueba tus regex en el entorno donde se utilizarán. Ten en cuenta las diferencias en soporte de lookbehind y Unicode. Para compatibilidad multiplataforma, utiliza patrones más simples.
Flags (modificadores) de Regex
Los flags son modificadores que cambian cómo se procesa el patrón.
Flag | Significado |
|---|
i | Ignorar mayúsculas/minúsculas |
g | Búsqueda global |
m | Modo multilínea |
s | Dotall (incluye \n en .) |
u | Unicode |
Caracteres especiales en Regex
Type | Símbolo | Descripción |
|---|
Anclas (posiciones) | ^ | Inicio de la cadena |
Anclas (posiciones) | $ | Fin de la cadena |
Anclas (posiciones) | \b | Límite de palabra |
Anclas (posiciones) | \B | No es límite de palabra |
Metacaracteres | . | Cualquier carácter excepto salto de línea (\n) |
Metacaracteres | | | Operador OR |
Metacaracteres | \ | Carácter de escape |
Literales | a | Carácter “a” |
Literales | ab | Cadena “ab” |
Cuantificadores | * | 0 o más repeticiones |
Cuantificadores | ? | 0 o 1 repetición |
Cuantificadores | + | 1 o más repeticiones |
Cuantificadores | {5} | Exactamente 5 repeticiones |
Cuantificadores | {5,} | 5 o más repeticiones |
Cuantificadores | {5,10} | Entre 5 y 10 repeticiones |
Clases de caracteres | \s | Espacio en blanco |
Clases de caracteres | \S | No espacio en blanco |
Clases de caracteres | \w | Carácter de palabra (alfanumérico + guion bajo) |
Clases de caracteres | \W | No carácter de palabra |
Clases de caracteres | \d | Dígito |
Clases de caracteres | \D | No dígito |
Secuencias de escape | [\b] | Retroceso (backspace) |
Secuencias de escape | \c | Carácter de control |
Secuencias de escape | \n | Salto de línea |
Secuencias de escape | \t | Tabulación |
Secuencias de escape | \r | Retorno de carro |
Secuencias de escape | \ZZZ | Carácter octal |
Secuencias de escape | \xZZ | Carácter hexadecimal |
Secuencias de escape | \0 | Carácter nulo |
Secuencias de escape | \v | Tabulación vertical |
Grupos | (xyz) | Grupo de captura |
Grupos | (?:xyz) | Grupo sin captura |
Conjuntos y rangos | [xyz] | Cualquier carácter x, y o z |
Conjuntos y rangos | [^xyz] | Cualquier carácter excepto x, y o z |
Conjuntos y rangos | [a-q] | Rango de a a q |
Conjuntos y rangos | [0-7] | Rango de 0 a 7 |
Patrones de reemplazo | $` | Texto antes de la coincidencia |
Patrones de reemplazo | $' | Texto después de la coincidencia |
Patrones de reemplazo | $+ | Último grupo capturado |
Patrones de reemplazo | $& | Coincidencia completa |
Patrones de reemplazo | $n | Grupo capturado (ej. $1, $2) |
Lookarounds | (?=xyz) | Lookahead positivo |
Lookarounds | (?!xyz) | Lookahead negativo |
Lookarounds | (?<=xyz) | Lookbehind positivo |
Lookarounds | (?<!xyz) | Lookbehind negativo |
Comentarios | (?#comment) | Comentario (ignorado por el motor) |
Expresiones Regex más utilizadas
Tarea | Regex |
|---|
Solo dígitos | ^\d+$ |
Solo letras latinas | ^[A-Za-z]+$ |
Fecha (DD.MM.YYYY) | \d{2}\.\d{2}\.\d{4} |
Dominio | ^[a-z0-9.-]+\.[a-z]{2,}$ |
URL | https?:\/\/[^\s]+ |
Slug | ^[a-z0-9-]+$ |
Email (básico) | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
Email (estricto) | ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ |
Teléfono (genérico) | ^\+?\d{7,15}$ |
Etiquetas HTML | <[^>]+> |
Contraseña segura | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{12,}$ |
UUID | ^[0-9a-fA-F-]{36}$ |
Color HEX | ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
IP (IPv4) | ^(\d{1,3}\.){3}\d{1,3}$ |
Dirección MAC | ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$ |
Errores comunes en Regex
Las expresiones regulares suelen parecer sencillas, pero encierran muchos matices ocultos. A continuación, se muestran errores comunes que pueden dar lugar a resultados incorrectos.
Errores de sintaxis y lógica
Falta de escape: . coincide con cualquier carácter → usar \.
Uso incorrecto de cuantificadores: *, +, {} se aplican al elemento anterior
Confusión entre greedy y lazy: .* es codicioso → usar .*? para coincidencia mínima
Problemas en coincidencia de cadenas
Falta de anclas ^ y $: sin ellas, puede coincidir en cualquier parte del texto
Sensibilidad a mayúsculas: "Test" ≠ "test" → usar flag i si es necesario
Confusión con espacios: \s incluye tabs, saltos de línea, etc.
Errores prácticos
Uso de \w para Unicode: normalmente es [A-Za-z0-9_]
Intentar parsear HTML o JSON con regex → usar parsers especializados
Expresiones demasiado complejas: difíciles de mantener y depurar
Problemas de rendimiento