PK Systems
Herramientas para devs

Probador de Regex

Construye, prueba y depura expresiones regulares de JavaScript con resaltado en vivo, modo replace y patrones listos.

Probador de Regex

Salida

Vista previa resaltada
Coincidencias

    ¿Qué es una expresión regular?

    Una expresión regular (regex) es un mini lenguaje para buscar y transformar texto. Está detrás del find-in-files, análisis de logs, reglas de validación, lexers y la mayoría de funciones de buscar-y-reemplazar de los editores. Esta herramienta crea un RegExp en vivo en tu navegador, lo aplica al texto de prueba y muestra cada coincidencia más el resaltado en línea. Usa el motor estándar de JavaScript, así que lo que funciona aquí funciona igual en Node.js y en cualquier navegador moderno.

    Cómo usar el probador

    Escribe tu patrón (sin las barras /.../) en el campo, elige las flags que necesites y pega el texto de prueba debajo. Las coincidencias se resaltan en la vista previa y aparecen listadas con su posición en caracteres. Activa el Modo replace para ver el resultado de String.prototype.replace() con tu cadena de reemplazo — usa $& para el match completo y $1, $2 para grupos de captura. Los chips de preset cargan patrones comunes para que ajustes en vez de empezar de cero.

    Chuleta de regex

    Los tokens más útiles en un solo sitio. La regex de JavaScript sigue la sintaxis ECMAScript — cercana a PCRE, pero con alguna omisión (sin cuantificadores posesivos, sin patrones recursivos).

    Token Significado
    .Cualquier carácter (excepto salto de línea, salvo con la flag s)
    \d \w \sDígito, carácter de palabra (letras/dígitos/_), espacio
    ^ $Inicio de cadena, fin de cadena (por línea con la flag m)
    * + ?Cero o más, uno o más, cero o uno (codiciosos por defecto)
    {n,m}Entre n y m repeticiones
    [abc]Cualquier carácter del conjunto; usa [^abc] para negar
    (...)Grupo de captura; usa (?:...) para un grupo sin captura
    |Alternancia — coincide con cualquiera de los lados

    Preguntas frecuentes

    ¿Qué motor de regex usa?
    El motor JavaScript de tu navegador — V8 en Chrome/Edge, SpiderMonkey en Firefox, JavaScriptCore en Safari. Los tres implementan la especificación de regex de ECMAScript, por lo que el comportamiento es consistente entre navegadores e idéntico al de Node.js. Funcionalidades exclusivas de PCRE como patrones recursivos o cuantificadores posesivos no están soportadas.
    ¿Qué significa cada flag?
    g busca todas las coincidencias (no solo la primera). i ignora mayúsculas/minúsculas. m hace que ^ y $ coincidan con inicio/fin de línea. s permite que . coincida con saltos de línea. u activa el modo Unicode completo (necesario para propiedades como \p{Letter}). y es sticky — el match debe empezar exactamente en lastIndex.
    ¿Se envía algo a un servidor?
    No. El patrón, el texto de prueba y el reemplazo se evalúan localmente con new RegExp() y String.prototype.replace(). Abre DevTools > Network y confirma: no se hacen peticiones mientras escribes. Seguro para trozos de log, datos internos o cualquier cosa que no pegarías en un sandbox de regex alojado.
    ¿Por qué mi regex va lenta o congela la página?
    Backtracking catastrófico. Patrones con cuantificadores anidados como (a+)+ o (.*)* pueden ejecutar miles de millones de pasos en entradas que casi coinciden. Evita anidar +/*; prefiere alternativas como [^x]+ o ancla tu patrón. El probador limita matches desbocados en 50.000 iteraciones para que la página no se bloquee.
    ¿Cómo uso grupos de captura en modo replace?
    Pon partes de tu patrón entre paréntesis — esos pasan a ser grupos numerados: $1, $2, etc. Ejemplo: patrón (\w+)@(\w+) con reemplazo $2 / $1 intercambia usuario y dominio en un email. $& es el match completo, $$ imprime un $ literal. Los grupos nombrados (?<nombre>...) se usan como $<nombre>.
    ¿Por qué ^ y $ no coinciden por línea?
    Por defecto ^ solo coincide al inicio absoluto de la cadena y $ solo al final absoluto — no en cada línea. Añade la flag m (multilínea) y coincidirán con saltos de línea. Si además necesitas que . case con saltos de línea (por ejemplo, para capturar entre líneas), añade la flag s (dotAll).