Probador de expresiones regulares

Escribe un patrón y ve cada coincidencia resaltada en contexto: sin botones y con el motor RegExp de JavaScript del propio navegador.

Cómo se usa

  1. Escribe el patrón sin las barras y activa los flags que necesites: las coincidencias se actualizan mientras escribes, sin ningún botón que pulsar.
  2. Pega el texto de prueba. Cada coincidencia se resalta en el panel de resultados y se lista con su posición, su texto y sus grupos de captura.
  3. Copia todos los valores coincidentes a la vez o descárgalos como archivo de texto, una coincidencia por línea.

Ejemplo

Patrón y texto

(\w+)@(\w+)\.(\w+)

Escribe a ana@example.com o a luis@example.org para más detalles.

Coincidencias

Coincidencias: 2
#1 [10–25] ana@example.com
   1: ana  2: example  3: com
#2 [30–45] luis@example.org
   1: luis  2: example  3: org

La primera línea es el patrón (no hacen falta barras) y el resto es el texto de prueba. Los rangos son desplazamientos en el texto basados en 0 y con el final excluido: los mismos números que JavaScript indica en match.index. La búsqueda global está siempre activa, así que se encuentran todas las apariciones aunque no haya un interruptor g.

Reglas, límites y problemas conocidos

  • El motor es el RegExp de JavaScript del propio navegador: sin sabores PCRE, Python, Go ni RE2, y sin selector de sabor. No se admiten \A, \z ni flags en línea como (?i).
  • La búsqueda global está siempre activa; los únicos flags son i, m, s y u. No se ofrecen y (sticky), d (índices) ni v (conjuntos Unicode).
  • Las barras /…/ son decorativas: una / dentro del patrón no necesita escape aquí, a diferencia de un literal de JavaScript. La indicación de flags junto a ellas es la cadena exacta que puedes reutilizar en tu código.
  • Un error de sintaxis muestra el mensaje del propio navegador (en inglés) después de un prefijo localizado; el texto varía entre navegadores.
  • Un texto de prueba vacío no produce resultado: no hay línea que probar, así que patrones como ^$ no se pueden verificar aquí.
  • Se recogen hasta 2000 coincidencias (el recuento pasa a leerse 2000+) y la lista muestra las primeras 200. Ambos límites se avisan, no se truncan en silencio.
  • El texto de más de 100.000 caracteres se sigue actualizando mientras escribes, con una espera algo mayor antes de mostrar el resultado.
  • El retroceso catastrófico puede bloquear la pestaña: una regex de JavaScript se ejecuta de forma síncrona y no se puede interrumpir, así que no hay tiempo de espera. No pegues patrones que no sean de confianza ni textos enormes.
  • \w, \b y \d son solo ASCII incluso con u: para letras chinas o árabes usa \p{L} y el flag u. Sin u, \p{L} no es un error: se degrada en silencio a una coincidencia literal.
  • i usa el plegado simple de mayúsculas Unicode, no las reglas regionales: la İ y la i turcas no coinciden entre sí, y ß no se pliega a SS.
  • Los rangos son desplazamientos UTF-16 basados en 0 y con el final excluido, así que un emoji cuenta como dos. Un grupo que no ha participado se muestra como —; un grupo que ha coincidido con una cadena vacía se muestra vacío.
  • Las coincidencias de longitud cero (\b, a*, (?=x)) se muestran con una marca fina y su rango se lee n–n.
  • Copiar y descargar listan solo los valores coincidentes, uno por línea, sin números, rangos ni grupos. Por eso una coincidencia que contiene saltos de línea ocupa varias líneas.
  • Sin vista previa de sustitución, sin generador de código, sin enlace permanente y sin patrones guardados: el patrón nunca sale de la caja de entrada ni entra en la URL.

Una vez que el patrón funciona, estos son los siguientes pasos habituales.