Testar e depurar expressões regulares
O que este testador faz
Uma expressão regular é um padrão compacto que descreve um conjunto de cadeias de texto: o formato de um e-mail, de uma data, de um número de telefone ou de qualquer estrutura de texto recorrente. A ferramenta compila o padrão que você digita usando o motor de expressões regulares do JavaScript do seu navegador e o executa sobre o texto de teste assim que você faz uma alteração, sem uma etapa de 'executar' separada. Cada correspondência é destacada no próprio texto, e um painel de detalhes lista cada uma com seus grupos capturados e a posição em caracteres.
Como usa o mesmo motor que alimenta o RegExp no JavaScript e no Node.js, o que você vê aqui é exatamente o que o seu código fará.
Quando usar
Recorra a ele sempre que um padrão não se comportar como esperado. Em vez de espalhar console.log e rodar o script de novo, você cola um texto representativo, ajusta o padrão e vê os destaques mudarem em tempo real. Ele também é ótimo para montar um padrão do zero: comece amplo e vá refinando até que apenas as correspondências desejadas se acendam.
As estatísticas ao vivo — total de correspondências, número de grupos, comprimento do padrão e do texto e tempo de processamento — ajudam a identificar um retrocesso catastrófico ou um quantificador ganancioso demais antes que ele chegue à produção.
Exemplo: reconhecer uma data
Suponha que você queira extrair datas ISO de um log. O padrão (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) reconhece 2026-07-18 e a divide em três grupos nomeados: year, month e day. Com a flag g ativada, todas as datas do texto são capturadas, não apenas a primeira. Trocar \d{2} por \d{1,2} também aceitaria meses de um único dígito, como 2026-7-8.
Observações e casos-limite
As flags mudam tudo: i faz a correspondência ignorar maiúsculas e minúsculas, m permite que ^ e $ se ancorem a cada linha, s deixa o ponto abranger quebras de linha e u ativa o tratamento completo de Unicode. Lembre-se de que caracteres como . * + ? ( ) [ ] { } \ | ^ $ são especiais e precisam ser escapados com uma barra invertida para serem reconhecidos literalmente: para encontrar um ponto literal, escreva \. em vez de ., que corresponde a qualquer caractere. Os grupos sem nome são numerados a partir de 1 conforme a ordem do parêntese de abertura, enquanto (?:...) cria um grupo que não captura.