Como funciona
Expressões regulares são o jeito mais rápido de buscar, validar ou transformar texto, e também o mais fácil de errar. Esta ferramenta permite testar um padrão contra um texto real e ver na hora o que corresponde: cada correspondência fica destacada no texto e, abaixo, aparece a lista com a posição e o valor de cada grupo de captura, incluindo grupos nomeados ((?<nome>…)).
Você pode ativar as flags mais usadas com um clique: g (global), i (ignorar maiúsculas), m (multilinha), s (o ponto inclui quebras de linha) e u (Unicode). Se você digitar um texto de substituição, verá o resultado de aplicar replace com referências como $1 ou $<nome>, pronto para copiar.
O padrão roda no motor RegExp do JavaScript, então o que funciona aqui funciona igual no seu código Node.js ou no navegador. Para que uma expressão com backtracking catastrófico, como (a+)+$, não trave a página, a avaliação roda em um Web Worker com limite de um segundo; se demorar mais, a ferramenta interrompe e avisa.
Se o padrão tiver um erro de sintaxe, a mensagem aparece no lugar dos resultados. Nem o padrão nem o texto saem do seu navegador.
Exemplos
Capturar datas e reordená-las com uma substituição
Padrão: (\d{4})-(\d{2})-(\d{2}) flags: g
Texto: deploy 2026-10-29, rollback 2026-10-30
Substituição: $3/$2/$12 correspondências #1 2026-10-29 $1=2026 $2=10 $3=29 #2 2026-10-30 $1=2026 $2=10 $3=30 deploy 29/10/2026, rollback 30/10/2026
Grupos nomeados
Padrão: (?<user>[\w.]+)@(?<domain>[\w.-]+) flags: gi Texto: ana@example.com, luis.p@byteknife.dev
#1 ana@example.com user=ana domain=example.com #2 luis.p@byteknife.dev user=luis.p domain=byteknife.dev
Perguntas frequentes
Qual motor de expressões regulares é usado?
O de JavaScript do seu navegador (RegExp do ECMAScript). Ele funciona igual no Node.js, no Deno e no frontend; outros motores como PCRE, Python ou Java têm diferenças em lookbehind, flags e classes Unicode.
E se minha regex travar?
Ela é avaliada em um Web Worker com limite de 1 segundo. Se passar disso, o Worker é interrompido e aparece um aviso de possível backtracking catastrófico, sem a aba congelar.
Como uso os grupos na substituição?
Com $1, $2… para grupos numerados, $<nome> para grupos nomeados e $& para a correspondência inteira, como em String.prototype.replace.