Testador de regex
Roda no seu navegador; nada é enviado
Teste expressões regulares JavaScript no seu texto, com grupos de captura e substituição.
Test text
Type a pattern
O que é uma expressão regular?
Uma expressão regular, ou regex, é um padrão que descreve um conjunto de strings. \d{3} significa três dígitos, [a-z]+ uma ou mais letras minúsculas, e ^ e $ prendem a correspondência ao início e ao fim. Programas usam padrões para encontrar, extrair, validar e substituir texto.
As partes de um padrão entre parênteses são grupos de captura. Em (\d{4})-(\d{2}) aplicado a 2025-07, o grupo 1 é 2025 e o grupo 2 é 07. Grupos nomeados como (?<year>\d{4}) permitem se referir a uma parte pelo nome. Flags mudam o comportamento do padrão inteiro: i ignora maiúsculas e minúsculas e g encontra todas as correspondências em vez de só a primeira.
Este testador roda o RegExp do JavaScript, o motor dos navegadores e do Node.js, então um padrão que funciona aqui funciona igual em JavaScript e TypeScript. Outras linguagens compartilham quase toda a sintaxe, mas não toda; as perguntas abaixo listam as diferenças mais comuns.
Como usar esta ferramenta
- 1Digite um padrão na caixa entre as barras, sem as barras. Presets carrega um padrão com um texto de exemplo.
- 2Ligue e desligue flags na barra de ferramentas:
gglobal,iignorar maiúsculas,mmultilinha,sdotAll,uevmodos Unicode,ysticky edíndices de grupo. Passe o mouse sobre uma flag para ver o que ela faz. - 3Cole o texto em que buscar em Test text, ou arraste um arquivo para ele. As correspondências ficam destacadas enquanto você digita e aparecem em Matches com linha, coluna e grupos de captura.
- 4Clique numa correspondência, ou pressione Enter na caixa do padrão (F7 em outros lugares), para selecioná-la no texto e ver os grupos destacados. Shift+Enter ou Shift+F7 volta.
- 5Abra Replace para testar uma substituição como
$2/$1ou$<year>e ver o resultado. Apply to test text aplica no texto; Ctrl+Z desfaz.
Solução de problemas
- Interrompido depois de 2 segundos
- O padrão faz backtracking catastrófico neste texto: quantificadores aninhados como
(a+)+ou(.*,)*tentam um número exponencial de formas de casar antes de falhar. Faça cada parte repetida casar de um único jeito, por exemplo[^,]*em vez de.*. O mesmo padrão pode travar um servidor, e é por isso que ele é interrompido aqui. - O padrão funciona no código, mas não aqui, ou o contrário
- Numa string literal no código, cada barra invertida é escrita duas vezes (
"\\d+"). Aqui você digita o próprio padrão, com barras simples (\d+), como entre as barras de/\d+/. - Só uma correspondência é encontrada
- A flag
gestá desligada. Sem ela, a busca para depois da primeira correspondência, e Replace troca só a primeira. ^ou$casam só uma vez- Sem a flag
m, eles só casam no começo e no fim do texto inteiro. Liguempara casar em cada linha. - Escape ou grupo inválido com a flag
u - O modo Unicode é mais rígido: escapes que não significam nada, como
\-fora de uma classe de caracteres, viram erros. Tire a barra invertida ou desligueu.
Perguntas frequentes
Como o regex do JavaScript difere de PCRE, Python ou Java?
O JavaScript não tem quantificadores possessivos (a++) nem grupos atômicos ((?>…)), não tem \A e \Z (use ^ e $ sem a flag m) e não aceita (?i) no início do padrão: ligue as flags pelos botões. O Python escreve grupos nomeados como (?P<name>…), enquanto o JavaScript escreve (?<name>…). Lookbehind, grupos nomeados e escapes de propriedades Unicode como \p{L} (com u ou v) funcionam nos navegadores atuais.
Qual a diferença entre as flags m e s?
m (multilinha) faz ^ e $ casarem no início e no fim de cada linha. s (dotAll) faz o . casar também com quebras de linha; sem ela, o . casa com qualquer caractere menos quebra de linha.
O preset de email é um validador de email completo?
Não. Ele encontra o formato comum name@domain.tld no meio de um texto, que é o que você normalmente quer ao buscar em logs ou respostas. O padrão completo de endereços permite muito mais. Para validar um endereço, confira o formato básico e depois envie um email de confirmação.
Meu texto é enviado para um servidor?
Não. A busca roda no seu navegador, num worker em segundo plano desta página, e nada é enviado. Para sobreviver a um reload, o padrão e o texto ficam no session storage desta aba até você limpar ou fechar a aba. Copy link coloca a entrada no link depois do #, parte que os navegadores nunca enviam a um servidor, mas qualquer pessoa que receber o link consegue ler.