Probador de regex para JavaScript

Escribe una expresión regular y ve cada coincidencia resaltada mientras escribes, con grupos de captura, vista previa de reemplazos y una biblioteca de patrones listos para usar.

Funciona en tu navegadorSin registroNo se sube nada

Coincidencias resaltadas

    
Usa $1, $<name>, $& (coincidencia completa)
Detalles de las coincidencias
#ÍndiceCoincidenciaGrupos
Chuleta de regex
.Cualquier carácter salvo salto de línea (cualquiera con s)
\d \w \sDígito, carácter de palabra, espacio en blanco
\D \W \SNo dígito, no palabra, no espacio en blanco
[abc] [^abc]Cualquiera / ninguno de a, b, c
[a-z0-9]Rango de caracteres
\p{L} \p{N}Letra / número Unicode (requiere u)
^ $Inicio / fin de la entrada (de la línea con m)
\b \BLímite de palabra / no límite
* + ?0 o más, 1 o más, 0 o 1
{n} {n,} {n,m}Exactamente n, al menos n, entre n y m
*? +? ??Perezoso (lo mínimo posible)
a|ba o b
(…)Grupo de captura, referenciado como $1
(?<name>…)Grupo con nombre, $<name>
(?:…)Grupo sin captura
\1 \k<name>Referencia inversa
(?=…) (?!…)Lookahead / lookahead negativo
(?<=…) (?<!…)Lookbehind / lookbehind negativo
\. \* \\Caracteres literales escapados
\n \t \rSalto de línea, tabulación, retorno de carro
\uFFFFUnidad de código Unicode
\u{1F600}Punto de código (requiere u)
$&Coincidencia completa en un reemplazo
$` $'Texto antes / después de la coincidencia

Cómo usar: Probador de regex

  1. Escribe tu patrón entre las barras, sin las / que lo rodean.
  2. Activa flags como g (todas las coincidencias), i (ignorar mayúsculas) y m (multilínea).
  3. Pega tu texto de prueba. Las coincidencias se resaltan a la derecha y se listan debajo con su índice y sus grupos de captura.
  4. Marca Reemplazar e introduce un reemplazo como $1 o $<name> para previsualizar String.replace.
  5. 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

FlagNombreEfecto
gglobalBusca todas las coincidencias en lugar de detenerse en la primera.
iignoreCaseLas letras coinciden sin distinguir mayúsculas y minúsculas.
mmultiline^ y $ coinciden al principio y al final de cada línea.
sdotAll. también coincide con saltos de línea.
uunicodeTrata el patrón como puntos de código; habilita \p{…} y \u{…}.
ystickySolo busca coincidencias en la posición actual de lastIndex.
dhasIndicesIndica 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