Probador de expresiones regulares

Prueba expresiones regulares localmente y revisa coincidencias, grupos y posiciones.

El formulario interactivo está listo al activar JavaScript.

Cómo utilizar

Escribe una expresión regular de JavaScript sin las barras que la delimitan, añade indicadores y pega el texto en el que quieres buscar. El resultado enumera cada coincidencia con su número, la posición en la que empieza y el texto de cada grupo de captura; un grupo que no ha participado en la coincidencia se muestra como —. El patrón se escribe como lo escribirías entre barras en el código: con una sola barra invertida, como en \d, no con dos.

Los indicadores (flags) cambian la forma de aplicar el patrón: g encuentra todas las coincidencias en lugar de solo la primera, i no distingue entre mayúsculas y minúsculas, m hace que ^ y $ coincidan al principio y al final de cada línea, s permite que el punto coincida con los saltos de línea, u activa el modo Unicode completo, v es una versión mejorada de u que añade operaciones de conjuntos en las clases de caracteres (usa u o v, pero no ambos), el indicador y (sticky) solo busca coincidencias al principio del texto o justo donde terminó la coincidencia anterior, y d registra el principio y el final de cada grupo (la herramienta no los muestra). Sin g (ni el indicador y), solo se muestra la primera coincidencia.

Las posiciones se cuentan desde 0 y se miden en unidades de código UTF-16, igual que JavaScript cuenta la longitud de una cadena, así que un emoji suele contar como dos. Los grupos con nombre, como (?<year>\d{4}), se enumeran por número, en el orden en que aparecen sus paréntesis de apertura.

La búsqueda se ejecuta en un worker aparte y se detiene al cabo de medio segundo. Un patrón con repeticiones anidadas como ^(a+)+$ puede tardar exponencialmente más en un texto que casi coincide, lo que se conoce como backtracking catastrófico; en lugar de bloquear la página, la herramienta se detiene y muestra el mensaje «La expresión tardó demasiado en evaluarse». Solo se enumeran y cuentan las primeras 200 coincidencias; el patrón puede tener hasta 500 caracteres y el texto, hasta 100.000.

El motor es el de tu navegador. Los patrones suelen funcionar también en otros lenguajes, pero no siempre: Python escribe los grupos con nombre como (?P<name>…), PCRE y Java tienen cuantificadores posesivos y grupos atómicos que JavaScript no tiene, y un indicador (?i) al principio de un patrón no es válido en JavaScript (los navegadores recientes solo aceptan la forma acotada (?i:…)). Prueba el patrón en el lenguaje de destino antes de confiar en él allí.

Ejemplo

Encuentra dos coincidencias con aspecto de email. El resultado muestra el texto, la posición inicial y los grupos capturados.

  • \b[a-z]+@([a-z0-9-]+\.)+[a-z]{2,}\b · indicadores: giEn el texto de ejemplo: [email protected] en la posición 9 y [email protected] en la 35. El grupo 1 contiene la última repetición de su grupo, example. y ntools., no el dominio completo.
  • ^(?<key>[^=]+)=(?<value>.*)$ · indicadores: gmEn las líneas name=Ana y city=Porto: dos coincidencias, con los grupos name y Ana, y después city y Porto. Sin m no hay ninguna coincidencia, porque entonces ^ y $ se refieren al texto completo.
  • (\d{4})-(\d{2})-(\d{2}) · indicador: gEn 2026-10-02 y 2027-03-01: dos coincidencias, cada una dividida en año, mes y día.
  • colou?r · indicadores: giCoincide tanto con Color como con colour: el ? hace que la u sea opcional, y el indicador i hace que no importe la C mayúscula.

Preguntas frecuentes

¿Las expresiones son compatibles con todos los lenguajes?

No. Usan el motor RegExp de JavaScript; las funcionalidades y la forma de escapar caracteres pueden ser distintas en Python, PHP, Java u otros motores.

¿Por qué mi patrón solo encuentra una coincidencia?

Añade el indicador g. Sin él, una expresión regular se detiene en la primera coincidencia.

¿Por qué ^ y $ no coinciden en cada línea?

Por defecto significan el principio y el final de todo el texto. El indicador m hace que funcionen línea a línea.

¿Qué significa «La expresión tardó demasiado en evaluarse»?

La búsqueda ha tardado más de medio segundo, normalmente por repeticiones anidadas como (a+)+ o (.*)*. Haz más específicas las partes que se repiten, por ejemplo [^,]* en lugar de .*, para que el motor tenga menos formas de intentar una coincidencia.

Herramientas relacionadas