Um regex tester deixa você escrever uma expressão regular e ver na hora o que ela casa dentro de um texto de exemplo. Devs usam regex pra validar entradas, extrair dados de strings, vasculhar logs, limpar texto, montar comandos no editor e escrever regras de busca e substituição.
Regex parece coisa de outro mundo no começo porque uns poucos símbolos carregam muito significado. Um testador ao vivo desmistifica isso: cada caractere que você digita atualiza os matches destacados e os grupos de captura, então dá pra ir experimentando até o padrão fazer exatamente o que você quer.
Cada linguagem usa um motor de regex um pouco diferente (JavaScript, PCRE, Python, Java, Go, .NET). O essencial - caracteres, classes de caracteres, quantificadores, âncoras e grupos - funciona em qualquer lugar. As diferenças aparecem nos recursos avançados (lookbehind, grupos nomeados, quantificadores possessivos).
O que você vai aprender testando regex
Um padrão descreve o *formato* do texto, não o significado. \d+ casa uma sequência de dígitos, mas não sabe se aquele número faz sentido.
Flags mudam o comportamento: g acha todos os matches, i ignora maiúsculas/minúsculas, m faz ^ e $ casarem nos finais de linha, s permite que . case quebras de linha.
Grupos de captura (...) extraem partes do match - não só verificam se a string inteira bate. São essenciais pra parsing.
Quantificadores são *gulosos* (greedy) por padrão: tentam casar o máximo possível. Adicionar ? deixa eles *preguiçosos* (lazy), casando o mínimo possível.
Como usar o regex tester passo a passo
1
Digite seu padrão
Coloque a expressão regular no campo do padrão. Não inclua as / em volta - isso é sintaxe de literal do JavaScript, não faz parte do padrão em si.
2
Marque as flags que você precisa
Na maioria das vezes você vai querer g (acha todos os matches) e i (ignora caixa). Use m pra âncoras linha a linha e s pra deixar . casar quebras de linha.
3
Cole seu texto de teste
Jogue uma amostra de texto na área de teste. Os matches são destacados conforme você digita, e os grupos de captura aparecem listados embaixo da lista de matches.
4
Leia o painel de matches
Cada match mostra a posição, o texto completo e os grupos capturados. Use isso pra confirmar que o padrão pega o que você quer e ignora o que não quer.
5
Refine até ficar certo
Aperte os quantificadores, adicione âncoras (^, $) ou escape caracteres literais (\., \?) até os matches e grupos baterem exatamente com o que seu código precisa.
Cheat sheet de regex
Os 80% de regex que você vai usar 99% do tempo. Salva nos favoritos - é o jeito mais rápido de lembrar a sintaxe. Pra gramática completa, dá uma olhada no guia de expressões regulares da MDN.
Token
Significado
Exemplo
.
Qualquer caractere (menos quebra de linha)
a.c casa abc, a-c
\d\D
Dígito / não-dígito
\d+ casa 123
\w\W
Caractere de palavra (letra/dígito/_) / não-palavra
\w+ casa hello_1
\s\S
Espaço em branco / não-espaço
\s+ casa espaços e tabs
[abc]
Qualquer um entre a, b ou c
[aeiou] casa uma vogal
[^abc]
Nenhum entre a, b ou c
[^0-9] casa não-dígitos
*+?
0+, 1+, 0 ou 1 do anterior
a+ casa a, aaa
{n}{n,m}
Exatamente n / entre n e m
\d{3,5} 3 a 5 dígitos
^$
Início / fim da string (ou da linha com m)
^Error linha começa com Error
(...)
Grupo de captura
(\d+) captura os dígitos
(?:...)
Grupo sem captura
(?:foo|bar) agrupa sem capturar
a|b
Alternância - a ou b
sim|nao
\b
Limite de palavra
\bcat\b casa cat, mas não cats
Exemplos de regex pra testar
Casar o formato básico de um e-mail
Padrão
^[\w.+-]+@[\w-]+\.[\w.-]+$
Texto
learner@coddy.tech
Isso pega o formato básico algo@algo.algo. Validação de e-mail no mundo real é bem mais permissiva que isso - em formulários, é melhor usar type="email" e uma checagem no servidor.
Extrair todos os números de uma frase
Padrão
\d+
Texto
Lesson 12 has 3 tasks and 2 quizzes.
Com a flag g, isso encontra cada sequência de dígitos: 12, 3, 2. \d+ é o equivalente em regex de "um ou mais dígitos".
Tirar um id de uma URL com grupo de captura
Padrão
/users/(\d+)
Texto
/users/42/profile
O match completo é /users/42, e o grupo de captura (\d+) extrai só o 42. Grupos de captura são justamente como você *usa* o resultado de um regex no código.
Quantificadores gulosos vs preguiçosos
Guloso
<.+>
Preguiçoso
<.+?>
Texto
<b>hello</b>
A versão gulosa casa a string inteira <b>hello</b> porque .+ agarra o quanto consegue. A versão preguiçosa (+?) para no primeiro >, então casa só <b> e </b>.
Erros comuns com regex
Esquecer de escapar caracteres especiais: ., ?, +, (, ), [, ], {, }, \, ^, $, |. Quando você quer eles literalmente, coloca \ antes.
Escrever um padrão que funciona pra um exemplo, mas quebra com entrada real cheia de espaços extras, quebras de linha ou campos faltando.
Usar .* de forma gulosa e casar muito mais do que devia - troca por .*? ou por uma classe de caracteres mais específica.
Tentar parsear formatos com aninhamento profundo (HTML completo, linguagens de programação, parênteses balanceados) usando regex. Pra isso, use um parser de verdade.
Esquecer da flag g e ficar se perguntando por que só o primeiro match aparece destacado.
Perguntas frequentes sobre regex
O que é regex?
Regex é abreviação de *regular expression* (expressão regular) - uma linguagem compacta de padrões pra casar texto. A mesma ideia existe em praticamente toda linguagem de programação e em vários editores e ferramentas de linha de comando.
Como eu escrevo um regex?
Comece com os caracteres literais que você quer casar e depois troque as partes variáveis por classes de caracteres (\d, \w, [abc]) e quantificadores (*, +, ?, {n,m}). Use um regex tester pra ir iterando até o padrão casar exatamente os casos que você quer.
O que significa \w em regex?
\w casa um caractere de palavra - uma letra, um dígito ou um underscore. \W é o oposto (qualquer não-palavra). O conjunto exato depende do motor e da flag Unicode.
Por que meu regex está casando demais?
Quantificadores são gulosos por padrão - .* casa o máximo possível. Troque por um quantificador preguiçoso (.*?) ou use uma classe de caracteres mais específica pra parar onde você quer.
Regex em JavaScript é igual aos outros?
O básico é igual, mas os motores variam. JavaScript, PCRE, re do Python, Java, Go e .NET cada um suporta um conjunto um pouco diferente de flags e recursos avançados (suporte a lookbehind, grupos nomeados, quantificadores possessivos).
Iniciantes deveriam aprender regex?
Devem sim - aos poucos. Comece com literais, classes de caracteres, quantificadores, âncoras, flags e grupos de captura. Lookarounds, grupos nomeados e regex condicional ficam pra depois.