Probar y Depurar Expresiones Regulares
Prueba un patrón regex y mira las coincidencias, grupos y flags en vivo mientras lo escribes.
Patrón y muestra se quedan en tu equipo
Nada que borrar después
Seguro para muestras reales de producción
Funciona en todo navegador moderno
Cómo funciona
- 1
Escribe tu patrón
Ponlo en el campo y activa las banderas que piensas usar en producción.
- 2
Pega texto representativo
Incluye los casos incómodos y las cadenas que no deberían coincidir en absoluto.
- 3
Lee coincidencias y grupos
Comprueba lo encontrado y lo omitido antes de llevarte el patrón a ninguna parte.
Por qué usar esta herramienta
Cada coincidencia resaltada en vivo
Ve lo que el patrón captura de verdad mientras lo escribes, en vez de deducirlo de la sintaxis.
Grupos de captura desglosados
Grupos numerados y con nombre listados por coincidencia, que es donde la mayoría de patrones falla.
Banderas visibles
Global, sin distinguir mayúsculas, multilínea y dotall mostradas explícitamente y no enterradas en un delimitador.
Prueba también lo que no debe coincidir
Pega las cadenas que deben rechazarse junto a las que deben coincidir: esa es la mitad que la gente se salta.
No se sube nada
El patrón y el texto de muestra se quedan en tu navegador, y líneas de log reales nunca llegan a un servidor.
Gratis y sin cuenta
Sin registro, sin marca de agua y sin límite de cuánto pruebes.
Un patrón que coincide con tus ejemplos no es un patrón que funcione
Casi todo el mundo prueba igual: escribe la expresión, pega tres cadenas que se supone que debe capturar, las ve resaltadas y la publica. Eso confirma que el patrón no está completamente roto y no te dice nada del fallo que de verdad va a morder. La pregunta interesante no es qué coincide, sino qué coincide además: la entrada en la que nunca pensaste y que se cuela, y la entrada válida que rechaza en silencio. Un patrón para un teléfono que funciona con cuatro ejemplos se encontrará con un prefijo internacional, una extensión o un espacio en un sitio inesperado. Así que la disciplina que conviene adoptar es pegar a propósito las cadenas que deben rechazarse, junto a las que deben capturarse, y revisar ambas listas cada vez que el patrón cambie.
Algunos patrones pueden colgar el proceso que los ejecuta
Este es el fallo que convierte una expresión regular en una caída de servicio, y conviene conocerlo porque es invisible hasta que ocurre. La mayoría de motores buscan mediante retroceso: cuando una rama falla, retroceden y prueban otra. Con cuantificadores anidados —un grupo repetido que a su vez se repite, de la forma `(a+)+`— el número de combinaciones que probar crece exponencialmente con la longitud de la entrada. Sobre una cadena que coincide termina al instante; sobre una que *casi* coincide y falla al final, puede tardar más de lo que lleva existiendo el universo. Eso es un vector de denegación de servicio cuando el patrón se aplica a la entrada de un usuario, y ha tumbado servicios grandes: tanto Cloudflare como Stack Overflow publicaron análisis post mortem atribuyendo una caída global exactamente a esto. Si tu patrón tiene un cuantificador dentro de un grupo cuantificado, pruébalo con una cadena larga que no coincida antes de acercarlo a producción.
No existe un único lenguaje de expresiones regulares
La sintaxis parece portable y no lo es. JavaScript, PCRE tal como la usan PHP y Perl, Python, Java, .NET y las herramientas POSIX implementan cada uno un dialecto distinto, y los patrones viajan entre ellos con cambios silenciosos de significado. La búsqueda hacia atrás es una trampa habitual: lleva décadas en PCRE y solo llegó a JavaScript hace poco, así que un patrón que funciona en tu editor puede fallar en un navegador. Go y varios otros sistemas usan RE2, que es un diseño distinto por completo: garantiza tiempo lineal, así que el retroceso catastrófico anterior es imposible, pero lo consigue eliminando las retrorreferencias y toda la búsqueda alrededor. La sintaxis de grupos con nombre, los escapes de propiedades Unicode e incluso lo que incluye `\d` varían. Prueba en el dialecto en el que vas a desplegar, porque si no el resultado es pasar aquí y fallar allí.
Codicioso por defecto, y el punto es más estrecho de lo que crees
Dos valores por defecto explican buena parte de los patrones que se comportan de forma rara. Los cuantificadores son codiciosos: `.*` toma todo lo que puede y solo devuelve lo imprescindible, así que `<.*>` sobre `<a><b>` coincide con la cadena entera y no con la primera etiqueta. Añadir un signo de interrogación lo vuelve perezoso —`<.*?>`— y hace coincidir cada etiqueta por separado, que es casi siempre lo que se pretendía. El segundo valor por defecto es que el punto no coincide con un salto de línea. Eso es invisible en ejemplos de una línea y se convierte en misterio en cuanto el patrón se topa con un documento de varias y se detiene en el primer salto; la bandera dotall lo arregla. Conviene distinguir un par relacionado: la bandera multilínea cambia lo que significan `^` y `$`, anclándolos a cada línea en vez de a toda la cadena, y no hace nada al punto.
Para qué no usar una expresión regular
El consejo de no analizar HTML con una regex suele contarse como broma, y la razón de fondo es precisa: el HTML anida a profundidad arbitraria, emparejar una etiqueta de apertura con su cierre exige contar, y una expresión regular no tiene memoria para contar. No es cuestión de escribir un patrón mejor: la clase de lenguaje es la equivocada. Las direcciones de correo fallan de otro modo. La gramática de la RFC 5322 permite cadenas entrecomilladas, comentarios y caracteres que nadie espera, así que un patrón realmente conforme llega a miles de caracteres y aun así no puede decirte lo único que importa, que es si la dirección recibe correo. La regla práctica para ambos: usa un analizador de verdad para marcado estructurado y, para una dirección, comprueba que hay una `@` con algo a cada lado y envía un mensaje de confirmación.
Por qué probar en local importa con este tipo de texto
El patrón en sí rara vez es sensible. Lo que pegas para probarlo normalmente sí lo es, porque una expresión regular solo merece probarse contra entrada realista: líneas de log reales con direcciones reales dentro, una exportación de registros de clientes que intentas limpiar, una muestra de datos de producción que copiaste precisamente porque los ejemplos inventados no capturaban el problema. Ese es el material que hace significativa la prueba y el material que no elegirías entregar a un tercero. Esta herramienta ejecuta la coincidencia en la página y no transmite ni el patrón ni la muestra, y puedes comprobarlo en la pestaña Red de las herramientas de desarrollo.
Errores comunes que conviene evitar
- Probar solo cadenas que deberían coincidir. El fallo que muerde es la entrada en la que nunca pensaste colándose: pega también las que deben rechazarse cada vez que cambies el patrón.
- Anidar un cuantificador dentro de un grupo cuantificado. Formas como `(a+)+` retroceden exponencialmente con una entrada casi coincidente, un vector de denegación de servicio con caídas globales documentadas.
- Suponer que el patrón es portable. La búsqueda hacia atrás, los grupos con nombre y los escapes Unicode difieren entre JavaScript, PCRE, Python y RE2: prueba en el dialecto de despliegue.
- Olvidar que `.` no coincide con un salto de línea. Un patrón que va bien en una línea se detiene en el primer salto de un documento; lo que quieres es dotall, no multilínea.
- Analizar HTML o validar correo con una regex. El anidamiento necesita un contador que una regex no tiene, y un patrón de correo conforme sigue sin decirte si la dirección recibe mensajes.
Comparativa
| Aspecto | Esta herramienta | Probadores online | El panel de búsqueda de un editor |
|---|---|---|---|
| Contenido enviado a un servidor | Nunca | Normalmente sí | No |
| Grupos de captura desglosados | Sí | Normalmente | Rara vez |
| Banderas mostradas explícitamente | Sí | Normalmente | En parte |
| Funciona sin abrir un proyecto | Sí | Sí | No |
| Cuenta o registro | No hace falta | A veces exigido | No hace falta |
| Precio | Gratis | Gratis / planes de pago | Gratis / de pago |
Características
Resaltado en vivo
Coincidencias marcadas en el texto de muestra a medida que cambia el patrón, con detalle al pasar el cursor.
Grupos con nombre y numerados
Cada captura listada por coincidencia, para ver qué grupo contiene qué.
Todas las banderas habituales
Global, ignorar mayúsculas, multilínea, dotall, unicode y sticky, cada una conmutable por separado.
Número y posiciones de coincidencias
Cuántos aciertos y dónde empiezan, lo que importa al reemplazar y no solo al buscar.
Errores de sintaxis explicados
Un corchete sin cerrar o un escape mal puesto dice qué falla en vez de no coincidir en silencio.
Aguanta entradas largas
Archivos de log enteros se pueden pegar como sujeto de prueba sin subida.
Nada que instalar
Sin editor, sin entorno de ejecución, sin dependencias: funciona en la página web.
Listo para árabe y RTL
Interfaz completa en ocho idiomas, incluido el árabe de derecha a izquierda.
Seguro por defecto
Servido por HTTPS, sin rastreo de contenido ni subida a terceros.
Quién la usa
Desarrolladores
Afinar un patrón contra datos de muestra reales antes de meterlo en el código.
Analistas de datos
Construir un patrón de extracción para una columna sucia y ver exactamente qué se le escapa.
Administradores de sistemas
Comprobar una expresión de filtrado de logs contra líneas reales y no inventadas.
Quien está aprendiendo expresiones regulares
Ver qué hace un patrón según lo cambias, que es más rápido que leer sobre ello.
Preguntas Frecuentes
No. Todo se ejecuta localmente en tu navegador — tu texto nunca se sube, guarda ni comparte.
Sí — totalmente gratis, sin cuenta y sin límites.