Informática
Testador de expressões regulares
Digite o padrão, as flags e o texto: veja na hora as correspondências destacadas, os grupos de captura de cada uma e, se quiser, o texto após a substituição. O motor é o JavaScript do seu navegador.
Expressões regulares na prática
Uma expressão regular descreve um conjunto de cadeias: \d{4}-\d{2}-\d{2} reconhece datas escritas como 2025-03-14, \d{5}-\d{3} um CEP. Os parênteses criam grupos de captura, que a substituição pode reutilizar com $1, $2 ou pelo nome, se o grupo tiver um.
As flags mudam o comportamento: g busca todas as correspondências em vez da primeira, i ignora maiúsculas e minúsculas, m faz ^ e $ valerem em cada linha, s deixa o ponto corresponder a quebras de linha, u ativa classes Unicode como \p{L}. Sem g, a substituição troca só a primeira ocorrência.
Alguns padrões, como (a+)+$ ou (\w+\s?)*$, testam um número exponencial de combinações num texto que quase corresponde e podem travar um navegador ou um servidor: é o ReDoS. Aqui o teste roda num processo separado e é interrompido depois de um segundo, então a página continua usável e avisa do problema.
Erros comuns
- Esquecer de duplicar as barras invertidas quando a regex vai dentro de uma string no código: aqui se escreve \d, numa string JavaScript "\\d".
- Usar .* onde é preciso .*?: o quantificador guloso pega tudo até a última ocorrência possível.
- Aninhar quantificadores como (a+)+ ou (a|a)*: é a causa mais comum de backtracking catastrófico.
Perguntas frequentes
Qual motor de expressões regulares é usado?
O JavaScript (ECMAScript) do seu navegador. É muito parecido com o PCRE, usado pelo PHP, mas faltam algumas funções, como grupos atômicos e quantificadores possessivos.
Como uso um grupo na substituição?
Com $1, $2… para grupos numerados, $ seguido do nome entre os sinais < e > para os nomeados e $& para a correspondência inteira. Um cifrão literal se escreve $$.
O texto que digito é enviado para algum lugar?
Não: tudo acontece no navegador. Padrão e texto só vão para o endereço da página, para poder compartilhá-la, e só quando são curtos.
Como funciona este cálculo
O padrão é compilado com new RegExp(padrão, flags) e aplicado com String.prototype.matchAll, sempre com a flag g acrescentada para percorrer o texto; sem g no pedido fica só a primeira correspondência. A substituição usa String.prototype.replace com as flags escolhidas. A execução acontece num Web Worker, encerrado se não responder em 1 segundo; no máximo 1000 correspondências são listadas.
Calculadoras relacionadas
Formatador e validador JSON
Formate, minifique e valide JSON: indentação, chaves ordenadas e posição exata dos erros.
Codificação de URL
Codificação e decodificação por porcentagem de valores e endereços, e uma URL dividida em partes.
Conversor Base64
De texto, inteiro, hexadecimal ou binário para Base64 e de volta, com os grupos de 6 bits explicados.
Expressões cron explicadas
Traduza uma expressão cron em palavras e veja as próximas execuções, campo por campo.