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

Matches are listed here with their position and capture groups. Patterns use JavaScript's RegExp, as in browsers and Node.js; type them without the surrounding slashes.
Type a pattern
/gLn 1, Col 1

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

  1. 1Digite um padrão na caixa entre as barras, sem as barras. Presets carrega um padrão com um texto de exemplo.
  2. 2Ligue e desligue flags na barra de ferramentas: g global, i ignorar maiúsculas, m multilinha, s dotAll, u e v modos Unicode, y sticky e d índices de grupo. Passe o mouse sobre uma flag para ver o que ela faz.
  3. 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.
  4. 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.
  5. 5Abra Replace para testar uma substituição como $2/$1 ou $<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 g está 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. Ligue m para 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 desligue u.

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.