TanodTools
ES

Probador de regex

Prueba una expresión regular con un texto de ejemplo y ve cada coincidencia, sus grupos de captura y el resultado de un reemplazo.

Funciona completamente en tu navegador

Flags

Coincidencias en el texto

  
#PosiciónCoincidenciaGrupos

Sintaxis de regex de JavaScript (ECMAScript) tal como la admite tu navegador. Texto de hasta 5 MB; se listan y resaltan las primeras 1.000 coincidencias. Un patrón que tarda más de 2 segundos se detiene.

Cómo probar una expresión regular

  1. Escribe el patrón entre las barras y marca los flags que necesites, como g para todas las coincidencias o i para ignorar mayúsculas y minúsculas.
  2. Pega tu texto de prueba. Las coincidencias se resaltan mientras escribes, y la tabla lista cada coincidencia con su posición y sus grupos de captura.
  3. Para comprobar una sustitución, escribe un reemplazo como $2-$1 o $<year> y lee el resultado debajo.

Probar patrones de forma segura

Este probador de regex construye un RegExp de JavaScript con tu patrón y tus flags y lo ejecuta en un worker en segundo plano, el mismo motor que usará tu código en este navegador. Las coincidencias vuelven con su posición inicial y cada grupo de captura, y la página las dibuja sobre tu texto con resaltados alternos para que las coincidencias vecinas se distingan. Una coincidencia vacía, como la que pueden producir \b o a*, se muestra como una barra delgada.

Ejecutar el patrón en un worker es importante porque una expresión regular puede tardar un tiempo exponencial. Si un patrón sigue ejecutándose después de 2 segundos, el worker se detiene y recibes un mensaje en lugar de una pestaña congelada. La misma protección se aplica en Buscar y reemplazar.

Las posiciones se cuentan en unidades de código UTF-16, que es como cuentan las cadenas de JavaScript: un emoji u otro carácter fuera del plano básico ocupa dos. La lista muestra las primeras 1.000 coincidencias; el total que aparece arriba incluye todas.

Consejos

Preguntas frecuentes

¿Qué variante de regex usa?

La de JavaScript, ejecutada por el motor de tu propio navegador, así que los resultados son exactamente los que da RegExp en tu navegador o en Node.js. La mayor parte de la sintaxis cotidiana es compartida con PCRE, Python y Java, pero algunas funciones difieren: los cuantificadores posesivos y los grupos atómicos no se admiten, y el lookbehind, los grupos con nombre y el flag v requieren un navegador actual.

¿Por qué solo se muestra una coincidencia?

Sin el flag g (global), una regex de JavaScript encuentra solo la primera coincidencia, y el reemplazo cambia solo la primera aparición. Marca g para encontrarlas todas. El probador sigue el lenguaje al pie de la letra para que lo que ves sea lo que hará tu código.

¿Qué hacen los flags?

g encuentra todas las coincidencias, i ignora mayúsculas y minúsculas, m hace que ^ y $ coincidan en los saltos de línea, s permite que . coincida con saltos de línea, u activa el manejo completo de Unicode, v es el modo Unicode más nuevo con operaciones de conjuntos, y (sticky) solo coincide en la posición actual y d registra el inicio de cada grupo, algo que el probador usa de todos modos para las posiciones de los grupos.

¿Cómo uso los grupos en el reemplazo?

$1, $2, etc., insertan grupos numerados, $<name> inserta un grupo con nombre, $& inserta la coincidencia completa, $` y $' insertan el texto anterior y posterior a ella, y $$ escribe un signo de dólar literal.

¿Por qué mi patrón se detuvo con "tardó demasiado"?

Algunos patrones, como ^(a+)+$ sobre una larga serie de letras a que no termina como el patrón espera, hacen que el motor pruebe una cantidad enorme de formas de coincidir. Esto se llama backtracking catastrófico. El probador ejecuta cada patrón en un worker en segundo plano y lo detiene a los 2 segundos para que la página siga siendo usable. Reescribe repeticiones anidadas como (a+)+ como a+.

¿Se envía mi texto a algún lado?

No. El patrón y el texto se quedan en tu navegador; la búsqueda de coincidencias ocurre en tu dispositivo y no se sube ni se guarda nada.