Cómo usar: Probador de regex
- Escribe tu patrón entre las barras, sin las
/ que lo rodean. - Activa flags como
g (todas las coincidencias), i (ignorar mayúsculas) y m (multilínea). - Pega tu texto de prueba. Las coincidencias se resaltan a la derecha y se listan debajo con su índice y sus grupos de captura.
- Marca Reemplazar e introduce un reemplazo como
$1 o $<name> para previsualizar String.replace. - Elige un patrón de la Biblioteca de patrones para partir de una regex probada de email, URL, IP o fecha.
Expresiones regulares de JavaScript
Este probador usa el propio motor RegExp de tu navegador, así que los resultados son exactamente lo que devuelven String.match, matchAll, replace y RegExp.exec en JavaScript y Node.js. Eso incluye la sintaxis moderna: grupos con nombre (?<name>…), lookbehind (?<=…), escapes de propiedades Unicode como \p{L} con el flag u e índices de coincidencia con el flag d.
Qué hacen los flags
| Flag | Nombre | Efecto |
g | global | Busca todas las coincidencias en lugar de detenerse en la primera. |
i | ignoreCase | Las letras coinciden sin distinguir mayúsculas y minúsculas. |
m | multiline | ^ y $ coinciden al principio y al final de cada línea. |
s | dotAll | . también coincide con saltos de línea. |
u | unicode | Trata el patrón como puntos de código; habilita \p{…} y \u{…}. |
y | sticky | Solo busca coincidencias en la posición actual de lastIndex. |
d | hasIndices | Indica las posiciones de inicio y fin de cada grupo de captura. |
Protección contra el backtracking catastrófico
Los patrones con cuantificadores anidados, como (a+)+$ o (\w|\d)*x, pueden tardar un tiempo exponencial con entradas que casi coinciden. En una página web normal eso congela la pestaña. Aquí cada búsqueda se ejecuta en un Web Worker en segundo plano que se detiene al cabo de un segundo, y recibes una advertencia clara en lugar de un navegador bloqueado. El mismo patrón en código de producción podría ser una vulnerabilidad ReDoS, así que trata la advertencia como un bug que hay que corregir.
Consejos para escribir mejores regex
- Ancla los patrones con
^ y $ cuando valides valores completos; si no, basta con una coincidencia en cualquier parte de la cadena.
- Prefiere clases específicas como
[^"]* en lugar de .*; son más rápidas y evitan coincidencias de más.
- Usa grupos sin captura
(?:…) cuando no necesites el valor capturado.
- Pon nombre a tus grupos.
match.groups.year se lee mejor que match[1].
Preguntas frecuentes
¿Qué variante de regex usa este probador?
JavaScript (ECMAScript), mediante el RegExp integrado en tu navegador. La mayor parte de la sintaxis es común con PCRE, Python y Java, pero funciones como los cuantificadores posesivos, los grupos atómicos y los modificadores en línea como (?i) no están disponibles en JavaScript.
¿Por qué mi patrón solo encuentra una coincidencia?
Sin el flag g (global), JavaScript se detiene tras la primera coincidencia. Activa g para encontrar todas las apariciones.
¿Cómo hago referencia a los grupos en el reemplazo?
Usa $1, $2… para los grupos numerados, $<name> para los grupos con nombre, $& para la coincidencia completa y $$ para un signo de dólar literal.
¿Por qué el probador se detuvo por tiempo de espera?
El patrón tardó más de un segundo con tu entrada, lo que casi siempre indica backtracking catastrófico. Busca cuantificadores anidados como (x+)+ o alternativas solapadas como (a|a)* y reescríbelos para que cada carácter solo pueda coincidir de una forma.
¿Se envían mis datos de prueba a algún sitio?
No. La búsqueda se ejecuta localmente en un Web Worker dentro de tu navegador. Tu patrón y tu texto solo se guardan en tu propio navegador para que sigan ahí cuando vuelvas.
Herramientas relacionadas