Guía Completa de Expresiones Regulares (RegEx): Sintaxis, Tokens, Modificadores y Patrones Reales
Las Expresiones Regulares (conocidas comúnmente como RegEx o RegExp) son patrones formales utilizados para la búsqueda, validación sintáctica, extracción léxica y sustitución de cadenas de texto en todos los lenguajes de programación modernos (JavaScript, Python, PHP, Java, C#, Go y bases de datos SQL). Permiten formular reglas complejas de filtrado con una sintaxis compacta y altamente eficiente.
Este Probador y Depurador de Expresiones Regulares ejecuta la compilación y evaluación de patrones en tiempo real directamente en tu navegador. Ya sea que estés construyendo validaciones de formularios web, analizando logs de servidores Apache/Nginx o diseñando expresiones complejas con grupos de captura y lookaheads, esta herramienta te ofrece retroalimentación inmediata y resaltado visual por colores.
Metacaracteres Fundamentales y Clases de Caracteres
El dominio de las expresiones regulares parte del conocimiento de los comodines y delimitadores básicos:
.(Punto): Coincide con cualquier carácter individual excepto saltos de línea (a menos que se active el flags).\d/\D: Coincide con cualquier dígito numérico ([0-9]) / cualquier carácter que no sea dígito.\w/\W: Coincide con cualquier carácter alfanumérico o guion bajo ([a-zA-Z0-9_]) / cualquier carácter no alfanumérico.\s/\S: Coincide con cualquier espacio en blanco (espacios, tabulaciones, saltos) / cualquier carácter no blanco.^y$: Anclan la búsqueda al inicio y al final del texto (o de cada línea si se activa el flagm).[abc]/[^abc]: Coincide con cualquier carácter del conjunto / excluye los caracteres del conjunto.
Cuantificadores: Evaluación Codiciosa (Greedy) vs Perezosa (Lazy)
Los cuantificadores determinan cuántas repeticiones consecutivas de un token deben coincidir:
*(0 o más veces, codicioso) |*?(0 o más veces, perezoso / non-greedy).+(1 o más veces, codicioso) |+?(1 o más veces, perezoso).?(0 o 1 vez / token opcional).{n,m}: Coincide entrenymrepeticiones (ej.\d{4,8}para códigos PIN).
Significado de los Modificadores (Flags) de RegEx
Los modificadores cambian el comportamiento del motor de búsqueda:
- Global (
g): Busca todas las apariciones en el texto en lugar de detenerse tras el primer resultado. - Insensible a Mayúsculas (
i): Iguala mayúsculas y minúsculas sin distinción (/hola/icoincide conHolayHOLA). - Multilínea (
m): Hace que^y$reconozcan el inicio y fin de cada línea individual del texto. - DotAll (
s): Permite que el punto (.) reconozca también los caracteres de salto de línea (\n). - Unicode (
u): Interpreta la cadena respetando el rango completo de puntos de código Unicode y emojis.
Prevención del Backtracking Catastrófico y Vulnerabilidades ReDoS
El backtracking catastrófico ocurre cuando una expresión regular mal diseñada combina cuantificadores anidados sobre grupos abiertos, obligando al motor a evaluar millones de combinaciones ante cadenas que no coinciden. Para proteger tus aplicaciones, acota siempre las clases de caracteres, evita anidar cuantificadores repetitivos (como (a+)+$) y valida límites de longitud. Si necesitas manipular cadenas de URLs, visita nuestro Codificador/Decodificador URL, o explora la sintaxis temporal en el Generador de Expresiones Cron.
Seguridad y Privacidad Absoluta en Local
La depuración de logs o textos con datos sensibles requiere máxima confidencialidad. El probador de RegEx de iDiUtils funciona al 100% de manera local en el motor JavaScript de tu navegador. Ningún fragmento de texto ni patrón se transmite a servidores remotos. Para más herramientas de programación, consulta nuestro Hub de Herramientas para Desarrolladores o formatea estructuras de datos en el Formateador JSON.
Ejemplo Práctico
Patrón: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Coincidencias: "usuario@idiutils.com", "soporte.tecnico+test@dominio.es"
Comprueba la estructura estándar de un email con usuario, arroba, dominio y extensión TLD.
Patrón: \b(?:\d{1,3}\.){3}\d{1,3}\b (Flag: /g)
Coincidencias: "192.168.1.1", "10.0.0.254"
Extrae direcciones IP en notación decimal separadas por puntos con delimitadores de palabra.