Como o regex funciona no seu navegador?
Todo ambiente JavaScript embarca um motor nativo de expressões regulares — new RegExp(pattern, flags) compila o seu padrão, e métodos como String.prototype.match, String.prototype.replace e RegExp.prototype.exec o executam contra qualquer cadeia de entrada. Este testador envolve esse motor em uma interface para que você possa editar, executar e inspecionar padrões sem sair do navegador. Nada do que você digita — padrão, flags, cadeia de teste ou substituição — é enviado pela rede.
Como funciona o testador de regex?
O pipeline são poucos passos curtos, todos executados no cliente a cada tecla pressionada (com debounce de 150 ms para manter a digitação fluida):
- O corpo do seu padrão é lido do campo acima (sem delimitadores
/no início ou no fim — são decorativos). As flags selecionadas são concatenadas em uma string comogiougimsuy. new RegExp(patternBody, flags)compila o padrão. Se o motor lançar umSyntaxError(p. ex. um parêntese não pareado ou um escape inválido), a mensagem é exibida sobre a cadeia de teste e a lista de correspondências é limpa. O erro de compilação é oerr.messagereal de V8 / SpiderMonkey / JavaScriptCore, então coincide com o que você veria nas DevTools.- Para a lista de correspondências, o testador sempre enumera com uma flag global sintética — assim, mesmo desligando o
g, a lista continua mostrando todas as correspondências. A proteção padrão contra correspondências de largura zero (if (m.index === rx.lastIndex) rx.lastIndex++) impede o laço de ficar girando em padrões que combinam com cadeia vazia. O modo Substituir honra o seu conjunto real de flags, então$&se comporta igual aString.prototype.replace. - Entre cada iteração, o testador verifica
performance.now() - starte aborta quando 50 ms se passam. Isso protege contra retrocesso catastrófico em entradas como(a+)+$contra uma longa sequência dea— a aba, de outra forma, travaria. A proteção é de melhor esforço: um padrão patológico de correspondência única ainda pode consumir tempo dentro de uma única chamadaexec. Se isso acontecer, atualize a aba e reescreva o padrão com um quantificador não ganancioso ou um estilo possessivo atômico (p. ex.[^x]*x). - A cadeia de teste é dividida em segmentos no intervalo de cada correspondência e os segmentos correspondidos são envolvidos em elementos
<mark class="rx-match rx-cap-N">, ondeNpercorre seis cores de paleta para que correspondências adjacentes sejam fáceis de distinguir à primeira vista. Os grupos numerados (m[1],m[2], …) e nomeados (m.groups) de cada correspondência são renderizados como linhas rotuladas abaixo; se a flagdestiver ativa, índices[start, end]por grupo também são exibidos.
Por que usar este testador de regex?
- Privacidade: cada padrão, cadeia de teste e substituição é executado no seu navegador usando o motor JavaScript RegExp embutido. Nada sai da aba — importante quando a entrada é um log de cliente, um padrão de credencial vazada ou qualquer outra coisa que você não colaria em um playground de regex SaaS hospedado.
- Sabor honesto: o testador expõe exatamente o motor de regex que Node.js, Chrome, Safari, Firefox e qualquer validador de formulário baseado em navegador executam. Não há camada de tradução para o sabor Perl que esconda diferenças sutis — o que funciona aqui funciona no seu código.
- Depuração de captura e grupos nomeados: cada grupo numerado (
$1,$2, …) e nomeado ($<year>) é exibido por correspondência, então você pode construir um parser e ler as posições sem adivinhar. O modo Substituir permite combinar grupos livremente —$2-$1troca as duas primeiras posições,$<name>insere uma posição nomeada e$&ecoa a correspondência inteira. - Proteção contra retrocesso catastrófico: um teto de 50 ms na enumeração aborta padrões patológicos como
(a+)+$antes de congelarem a aba. Você vê um erro explicativo em vez de um navegador travado, e a página se recupera imediatamente.
Quais são as aplicações comuns de um testador de regex?
Expressões regulares aparecem no desenvolvimento web, segurança e trabalho com dados — este testador foca nos casos de uso mais comuns:
- Validação de formulário: prototipe um padrão de e-mail, telefone ou CEP, cole entradas de exemplo na cadeia de teste e confirme que cada caso positivo combina e cada caso negativo não combina antes de levar o padrão ao código de produção.
- Análise de logs: cole um trecho de saída NGINX, de aplicação ou de auditoria, escreva um padrão com grupos nomeados para as partes que importam (
(?<ip>…) (?<path>…)) e leia as posições capturadas por correspondência para confirmar que o seu parser está correto. - Buscar e substituir para refatoração: use o modo Substituir para reescrever identificadores em um trecho —
(\w+)\.set(\w+)\(→$1.$2 =transforma chamadas de setters em atribuições de propriedade, e a prévia ao vivo mostra o resultado antes de aplicá-lo em um codemod.
Como é um exemplo de regex?
Tome o padrão (\d{4})-(\d{2})-(\d{2}) com a flag g, executado contra a cadeia de teste release 2025-11-15, prerelease 2026-05-25. O motor encontra duas correspondências. A primeira é 2025-11-15 com grupo 1 = 2025, grupo 2 = 11, grupo 3 = 15. A segunda é 2026-05-25 com o mesmo formato de grupos. No modo Substituir, o modelo de substituição $3/$2/$1 reescreve ambas as datas como 15/11/2025 e 25/05/2026 — uma conversão ISO para DMY em um único padrão que você pode verificar visualmente antes de plugar o padrão em um script.
Use este testador como o caminho rápido para qualquer trabalho de regex — construir, depurar ou reescrever padrões. Tudo é executado localmente; nada é registrado; o motor de regex é o que o seu navegador embarca, então o comportamento coincide com o que o código de produção verá em tempo de execução.