Probador de expresiones regulares
Prueba expresiones regulares localmente y revisa coincidencias, grupos y posiciones.
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.