Arostik Logo
ArostikVLARCK

Micro-Soluciones Tecnológicas

DESARROLLO & BASES DE DATOS

Probador y Evaluador de Expresiones Regulares (Regex)

Escribe una expresión regular y ve las coincidencias, la explicación y el código listo para copiar, todo en vivo.

100% local — tu expresión y tu texto nunca salen de este navegador.
//g

Texto de prueba

Explicación paso a paso

Escribe una expresión regular para empezar.

Código listo para copiar

Elige tu lenguaje y copia el fragmento.

const regex = //g;
const isMatch = regex.test(input);
const allMatches = [...input.matchAll(new RegExp(regex.source, regex.flags.includes("g") ? regex.flags : regex.flags + "g"))];

Cheat Sheet — referencia rápida

Arquitectura de Motores Regex & Algoritmos de Búsqueda

DFA vs NFA, mitigación de ReDoS, grupos de captura y aserciones Lookaround.

Motores NFA (No Determinista) vs DFA (Determinista)

JavaScript, Python y PHP usan motores NFA tradicionales dirigidos por expresiones. Esto permite funciones avanzadas como retroreferencias y lookarounds, pero introduce el riesgo de backtracking ante patrones maliciosos.

Backtracking Catastrófico & ReDoS (O(2^n))

Ocurre cuando cuantificadores anidados (ej. `(a+)+$`) no coinciden con el final de una cadena larga. El motor intenta miles de millones de combinaciones recursivas, bloqueando el hilo de ejecución de Node.js o el navegador.

Grupos de Captura vs No Captura (?:...)

Usar `(?:...)` en lugar de `(...)` agrupa subexpresiones sin reservar memoria ni generar índices en el array de coincidencias, acelerando las búsquedas en textos masivos y reduciendo la recolección de basura.

Lookaheads & Lookbehinds de Ancho Cero

Los operadores `(?=...)`, `(?!...)`, `(?<=...)` y `(?<!...)` verifican si un texto precede o sigue a una coincidencia sin consumir caracteres, ideales para validar contraseñas complejas o aislar montos de moneda.

Solución de Problemas con Regex, Rendimiento & Flags

Diagnóstico y soluciones técnicas para ReDoS, bandera global en JS, escapes y codicia.

Fallo 1

La Aplicación se Congela al 100% de CPU por Backtracking ReDoS

⚡ Solución Rápida:Elimina cuantificadores solapados como `(a+)+` o `([a-zA-Z]+)*` y reemplázalos por clases atómicas disjuntas `[a-zA-Z]+`.
🔧 Solución Técnica:En motores modernos de Node.js o Java utiliza timeouts de ejecución o bibliotecas como `re2` de Google que garantizan tiempo de ejecución lineal O(n) sin backtracking.
Fallo 2

El método `regex.test()` Devuelve `true` y `false` Alternadamente en JS

⚡ Solución Rápida:Quita la bandera `g` (global) cuando uses `test()` para validaciones individuales, o resetea `regex.lastIndex = 0;` antes de evaluar.
🔧 Solución Técnica:En JavaScript, una instancia `RegExp` global con `/g` o `/y` mantiene estado mutable en `lastIndex`. Para buscar todas las coincidencias usa `string.matchAll(regex)`.
Fallo 3

La Barra Invertida `\` Desaparece o Da Error al Pasar a Código (Python/Java/C#)

⚡ Solución Rápida:Usa raw strings: en Python antepón `r"\d+"`, en C# `@"\d+"`, o duplica las barras `"\\d+"` en JavaScript/Java.
🔧 Solución Técnica:Consulta la pestaña de 'Fragmentos de Código' generada automáticamente por esta herramienta para copiar la sintaxis exacta con los escapes correctos para tu lenguaje.
Fallo 4

La Expresión Coincide con Demasiado Texto (Comportamiento Greedy vs Lazy)

⚡ Solución Rápida:Añade un signo de interrogación `?` después del cuantificador para volverlo perezoso (Lazy): `<.*?>` en lugar de `<.*>`.
🔧 Solución Técnica:Aún mejor que la coincidencia perezosa: usa clases negadas como `<[^>]*>`, que es hasta 10 veces más rápida y no requiere backtracking.

¿Sabías que...? Curiosidades sobre Expresiones Regulares

La famosa cita de Zawinski, el origen de 'grep' en Unix y las raíces neuronales de 1951.

💬

La legendaria frase de Jamie Zawinski en 1997

"Algunas personas, cuando se enfrentan a un problema, piensan: 'Ya sé, usaré expresiones regulares'. Ahora tienen dos problemas." Se convirtió en la broma más famosa de la ingeniería de software.

🧠

Nacieron en 1951 como modelo de redes neuronales biológicas

El matemático Stephen Cole Kleene inventó el álgebra de eventos regulares para modelar el comportamiento de las redes de neuronas del cerebro humano, dando origen a la teoría de autómatas finitos.

💻

De dónde viene la palabra 'grep' de Unix

En 1968, Ken Thompson implementó regex en el editor `ed` de Unix. El comando para buscar globalmente un patrón e imprimirlo era `g/re/p` (Global Regular Expression Print), que luego se convirtió en el programa independiente `grep`.

⚙️

PCRE: La librería en C que mueve a todo el software mundial

Escrita por Philip Hazel en la Universidad de Cambridge en 1997, PCRE (Perl Compatible Regular Expressions) está compilada dentro del servidor web Apache, Nginx, PHP, R, Postfix y miles de herramientas corporativas.

Glosario de Expresiones Regulares & Motores Regex

Aprende los conceptos fundamentales, protocolos y términos técnicos de esta herramienta.

Expresión Regular (Regex)Sintaxis

¿Qué es una expresión regular (Regex)?

Secuencia de caracteres que conforma un patrón de búsqueda formal para validar cadenas de texto, extraer subcadenas o sustituir caracteres de forma masiva.

Retroceso Catastrófico (ReDoS)Seguridad

¿Qué es el retroceso catastrófico (ReDoS)?

Vulnerabilidad algorítmica donde cuantificadores anidados ambiguos provocan que el motor explore trillones de combinaciones exponenciales, congelando la CPU.

Grupos de CapturaParsing

¿Qué son los grupos de captura en Regex?

Subpatrones delimitados por paréntesis `(...)` que aíslan segmentos coincidentes específicos para su posterior extracción o reutilización en variables.

Lookahead / LookbehindAvanzado

¿Qué son las aserciones Lookaround?

Condiciones de verificación que exigen que un texto esté precedido o seguido por otro patrón sin incluir esos caracteres en la coincidencia final del texto.