Testador de regex
Escreva um padrão e veja cada correspondência destacada no contexto — sem botão, e o motor é o RegExp do próprio JavaScript do navegador.
Resultado das correspondências
Como usar
- Digite o padrão sem as barras e ative as flags necessárias: as correspondências são atualizadas enquanto você digita, sem botão para clicar.
- Cole o texto a testar. Cada correspondência é destacada no painel de resultado, e cada uma é listada com sua posição, seu texto e seus grupos de captura.
- Copie todos os valores correspondidos de uma vez, ou baixe-os como arquivo de texto — uma correspondência por linha.
Exemplo
Padrão e texto
(\w+)@(\w+)\.(\w+) Fale com ana@exemplo.com ou lin@exemplo.org para detalhes.
Correspondências
Correspondências: 2 #1 [8–23] ana@exemplo.com 1: ana 2: exemplo 3: com #2 [31–46] lin@exemplo.org 1: lin 2: exemplo 3: org
A primeira linha é o padrão (sem barras), o resto é o texto de teste. Os intervalos são deslocamentos no texto baseados em 0, com fim exclusivo — os mesmos números que o JavaScript informa em match.index. A correspondência global está sempre ativa, então todas as ocorrências são encontradas mesmo sem um botão g.
Regras, limites e problemas conhecidos
- O motor é o RegExp do próprio JavaScript do navegador: sem sabores PCRE, Python, Go ou RE2, e sem seletor de sabor. \A, \z e flags embutidas como (?i) não são suportadas.
- A correspondência global está sempre ativa; as únicas flags são i, m, s e u. y (sticky), d (índices) e v (conjuntos Unicode) não são oferecidas.
- As barras /…/ são decoração: uma / dentro do seu padrão não precisa de escape aqui, ao contrário de um literal JavaScript. A leitura de flags ao lado delas é a string exata para reutilizar no código.
- Um erro de sintaxe mostra a mensagem do próprio navegador (em inglês) após um prefixo localizado; o texto varia entre navegadores.
- Texto de teste vazio não produz resultado — não há linha para testar, então padrões como ^$ não podem ser verificados aqui.
- Até 2000 correspondências são coletadas (a contagem então mostra 2000+) e a lista renderiza as primeiras 200. Ambos os limites são avisados em vez de truncar em silêncio.
- Texto acima de 100.000 caracteres ainda é atualizado enquanto você digita, com um atraso maior antes de o resultado aparecer.
- O retrocesso catastrófico pode travar a aba: uma regex JavaScript roda de forma síncrona e não pode ser interrompida, então não há timeout. Não cole padrões não confiáveis nem textos enormes.
- \w, \b e \d são apenas ASCII mesmo com u — corresponda letras chinesas ou árabes com \p{L} e a flag u. Sem u, \p{L} não é erro: ele degrada silenciosamente para uma correspondência literal.
- i usa o dobramento simples de maiúsculas Unicode, não regras de locale: İ e i turcos não se correspondem, e ß não se dobra em SS.
- Os intervalos são deslocamentos UTF-16 baseados em 0, com fim exclusivo, então um emoji conta como dois. Um grupo que não participou aparece como —; um grupo que correspondeu a uma string vazia aparece vazio.
- Correspondências de comprimento zero (\b, a*, (?=x)) aparecem como um marcador fino e seu intervalo mostra n–n.
- Copiar e baixar listam apenas os valores correspondidos, um por linha, sem números, intervalos ou grupos. Uma correspondência com quebras de linha, portanto, ocupa várias linhas.
- Sem prévia de substituição, sem gerador de código, sem link permanente e sem padrões salvos: o padrão nunca sai da caixa de entrada e nunca entra na URL.
Ferramentas relacionadas
Quando o padrão funciona, estes são os próximos passos habituais.