codekitto

Probador de regex

Escribe el patrón, elige las flags y pega un texto de ejemplo. Los matches se resaltan mientras escribes, con grupos, explicación de cada parte del patrón y errores claros — todo en el navegador, nunca en la URL.

Flags

Escribe un patrón para empezar a probar.

Texto resaltado


  

Matches

Explicación del patrón

Escribe un patrón válido para ver qué hace cada parte.

Código

Escribe un patrón válido para ver el código.

El patrón y el texto se quedan en este navegador. Nada se sube ni se pone en la URL.

Funciona en tu navegador. Lo que pegas no sale de tu dispositivo.

Cómo usar

  1. Escribe la expresión regular en el campo del patrón (sin las barras /…/ — solo el patrón).
  2. Activa o desactiva las flags: g para todos los matches, i para ignorar mayúsculas/minúsculas, m para ^/$ por línea, s para que . incluya saltos de línea, u para Unicode, y para sticky.
  3. Pega o escribe el texto de prueba. Los matches se resaltan mientras escribes; la lista de abajo muestra cada match, su índice y los grupos de captura (numerados y con nombre).
  4. Usa Copiar matches para poner cada match completo en el portapapeles (uno por línea). Limpiar reinicia patrón, texto y flags.
  5. La Explicación del patrón divide la regex en partes y dice, en español, qué coincide con cada una.
  6. En Código, elige JavaScript, Python, Java, C#, PHP o Go para obtener el código listo para pegar, con el patrón y las flags, y avisos sobre lo que ese lenguaje no admite.

Todo ocurre en el navegador. El patrón y el texto no se suben a ningún servidor y nunca van a la URL de la página.

Para qué sirve

Las expresiones regulares aparecen en validación de formularios, filtrado de logs, buscar y reemplazar en el editor, gateways de API y aserciones de prueba. Escribir el patrón de memoria es fácil; probarlo contra un texto real es donde salen los fallos: un punto sin escapar, un cuantificador voraz, una flag olvidada. Un probador en vivo acorta ese ciclo: cambia el patrón, mira el resaltado, revisa los grupos y corrige.

La página sirve a quien desarrolla, hace QA o depura un filtro. Puedes pegar un trozo de log, una lista de correos o un fragmento de HTML y afinar la expresión hasta que el resaltado coincida con lo esperado.

Los matches usan el motor JavaScript del navegador — las mismas reglas del front-end y de Node. Otros motores (PCRE, .NET, re de Python, RE2 de Go) difieren en detalles, y el panel de código avisa las diferencias conocidas.

Cómo funciona

La herramienta construye un RegExp con el patrón y las flags marcadas. En cada cambio aplica la expresión al texto. Con la flag g recoge todos los matches con String.prototype.matchAll; sin g (incluso con y), muestra solo el primero — el mismo comportamiento de un exec sin global. Un patrón inválido muestra el mensaje de error del navegador junto al Kitto confundido.

El resaltado envuelve cada tramo encontrado. Los matches vacíos (patrones que pueden coincidir con cero caracteres) también se marcan para ver dónde se detuvo el motor. La búsqueda corre en un hilo aparte (un Web Worker) con un límite de 2 segundos: si el patrón tarda más, se detiene y aparece un aviso, así la pestaña no se congela. La lista muestra como máximo 500 matches.

El panel Código reescribe el patrón para cada motor: los grupos con nombre pasan a (?P<nombre>…) en Python y Go, \u{…} pasa a \x{…} donde hace falta, [^] pasa a [\s\S], y el patrón va al tipo de string con menos escapes (raw string, verbatim, comillas invertidas). Lo que un motor no tiene — lookaround y referencias a grupos en Go, lookbehind de longitud variable en Python y PHP, la flag y fuera de JavaScript — aparece como aviso encima del código.

Preguntas frecuentes

¿Se envía el patrón o el texto a un servidor?

No. Compilar la expresión, buscar matches, resaltar y copiar ocurre en tu dispositivo. Nada entra en la URL ni lo sube esta página.

¿Por qué solo veo un match?

Activa la flag g (global). Sin ella, las APIs de regex de JavaScript devuelven solo el primer match; el probador sigue esa regla para reflejar lo que haría tu código.

¿Es la misma regex que en Python o PHP?

El probador usa el motor JavaScript, y la mayoría de los patrones cotidianos se comportan igual en otros lenguajes. Elige el tuyo en Código: convierte la sintaxis y avisa lo que no funciona allí. Aun así, confirma los patrones críticos en el lenguaje que publiques.

¿Qué son los grupos de captura?

Los paréntesis (…) guardan un trozo del match. Los grupos numerados aparecen como Grupo 1, Grupo 2, etc.; (?<nombre>…) aparece como grupo con nombre. Es lo que $1 / match[1] / groups.nombre exponen en el código.

¿Un patrón malo puede congelar el navegador?

No. Patrones muy anidados o ambiguos, como (a+)+$, pueden tardar un tiempo exponencial (backtracking catastrófico). Aquí la búsqueda corre en un Web Worker: tras 2 segundos se detiene y aparece un aviso, mientras la página sigue respondiendo. Si pasa, simplifica el patrón; en producción, el mismo patrón podría colgar también un servidor.

¿Es seguro pegar datos sensibles?

En esta página el contenido se queda en el navegador. Aun así, evita pegar secretos reales en un ordenador compartido; usa muestras anonimizadas cuando puedas.