RevealTheme logo

Probador de Expresiones Regulares

Prueba expresiones regulares de JavaScript contra cualquier entrada. Ve las coincidencias, los grupos y los reemplazos en tiempo real.

0 coincidencia(s)

Cómo usar esta herramienta

  1. 1

    Type your regular expression into the pattern field (no slashes — enter the bare pattern).

  2. 2

    Set the flags in the small field beside it, such as g, i, m, or a combination like gi.

  3. 3

    Paste or type the text you want to search into the large input box below.

  4. 4

    Read the match count and each matched substring with its character index in the results panel; an invalid pattern shows the engine's error message instead.

¿Qué son las expresiones regulares y cómo se leen?

Las expresiones regulares (regex) son un pequeño lenguaje específico de dominio para buscar patrones en texto. Todo lenguaje de programación moderno tiene un motor de regex; esta herramienta usa el RegExp nativo de JavaScript, que sigue la especificación ECMAScript 2018+ y admite funciones modernas como las aserciones lookbehind, los grupos de captura con nombre, los escapes de propiedades Unicode y el indicador dotAll. Los bloques básicos: los caracteres literales se coinciden a sí mismos (la regex 'gato' coincide con la palabra gato); las clases de caracteres coinciden con cualquiera de un conjunto ('[a-z]' coincide con letras minúsculas); los cuantificadores controlan la repetición (* cero o más, + uno o más, ? cero o uno, {3,5} entre 3 y 5); los anclajes coinciden con posiciones (^ inicio de cadena, $ fin, \b límite de palabra); los grupos capturan subcoincidencias ((gato|perro) coincide con cualquiera, capturando cuál); la alternación ofrece elección. La regex brilla para analizar texto estructurado pero no gramatical (registros, correos, números de teléfono, atributos HTML simples) y falla con estructuras genuinamente recursivas (HTML completo, JSON anidado). Para esas, usa un analizador. Este probador te permite iterar sobre un patrón con retroalimentación instantánea: cambia la regex y las coincidencias se recalculan en cada pulsación.

Casos de uso comunes

  • Valida el formato de la entrada del usuario (correos electrónicos, números de teléfono, códigos postales) antes de enviarla a tu servidor.

  • Extrae datos estructurados de archivos de registro (marcas de tiempo, IP, códigos de estado, rutas de petición).

  • Busca y reemplaza en cientos de archivos usando la búsqueda por regex de tu editor.

  • Escribe reglas de reescritura de URL para Nginx, el .htaccess de Apache o las reescrituras de Vercel.

  • Analiza formatos sencillos similares a CSV donde un analizador completo sería excesivo.

  • Crea patrones de validación de formularios para el atributo pattern de <input> en HTML.

Preguntas frecuentes

¿Qué indicadores se admiten?
g (global: encuentra todas las coincidencias, no solo la primera), i (sin distinción de mayúsculas), m (multilínea: ^ y $ coinciden con saltos de línea), s (dotAll: . coincide con saltos de línea), u (unicode: gestión correcta de caracteres multibyte), y (sticky: coincide solo en lastIndex). Combina indicadores concatenándolos: 'gim' habilita global + sin distinción de mayúsculas + multilínea.
¿Cómo coincido en varias líneas?
Dos necesidades distintas: 'm' hace que ^ y $ coincidan con saltos de línea (trata cada línea como una cadena separada para los anclajes). 's' hace que . coincida con saltos de línea (de lo contrario . coincide con todo excepto saltos de línea). Usa ambas juntas si necesitas coincidir con patrones que abarcan líneas.
¿Cuál es la diferencia entre cuantificadores codiciosos y perezosos?
Los cuantificadores codiciosos (*, +, {n,m}) coinciden con lo máximo posible. Los perezosos (*?, +?, {n,m}?) coinciden con lo mínimo posible. El ejemplo clásico: la regex '<.*>' sobre '<a><b>' coincide con todo '<a><b>'; '<.*?>' coincide solo con '<a>'.
¿Cuándo NO debo usar regex?
Cuando la estructura es genuinamente recursiva (HTML, JSON, paréntesis balanceados). Cuando necesitas gestionar correctamente cada caso límite (analizar fechas con zonas horarias, nombres con apóstrofos). Cuando la gramática de la entrada está bien definida y existe una biblioteca de análisis. Famosa respuesta de Stack Overflow: la regex es genial para encontrar patrones, terrible para analizar lenguajes.
¿Qué son los grupos de captura con nombre?
En lugar de que (\d{4})-(\d{2})-(\d{2}) devuelva grupos numerados, usa (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) y accede a las coincidencias como match.groups.year. Mucho más mantenible en código real.
¿Por qué mi regex es lenta con ciertas entradas?
Retroceso catastrófico. Los cuantificadores anidados como (a+)+ pueden tardar un tiempo exponencial con entradas adversariales. Evita los cuantificadores anidados y las alternaciones solapadas. El motor de JavaScript no tiene tiempo de espera, así que una mala regex puede colgar una solicitud. Para producción, usa el paquete npm safe-regex para detectar patrones arriesgados.
¿Coincide esto con lo que hace mi motor de regex del servidor?
En su mayoría: los principales sabores de regex (PCRE, re de Python, regex de Ruby, Java) son similares pero tienen diferencias sutiles. La sintaxis de lookbehind, el comportamiento de las clases de caracteres y la gestión de Unicode varían. Para paridad en producción, pruébalo también en el lenguaje objetivo.

Herramientas relacionadas