O que você precisa decidir antes do padrão
No JavaScript, Regex pode ser escrita como literal /padrao/flags ou construída com new RegExp(). A escolha muda principalmente a forma de escapar caracteres.
Pense no problema antes de escrever Regex
Um padrão fica mais simples quando a regra já está clara. Para este caso, siga esta sequência:
- 01Use literal quando o padrão é conhecido no código.
- 02Use RegExp quando o padrão é construído dinamicamente.
- 03Escolha o método conforme a intenção: test para booleano, exec/matchAll para capturas e replace para transformação.
Duas formas de criar uma Regex
const a = /^DEV-\d{4}$/;
const b = new RegExp('^DEV-\\d{4}$');Literal é mais legível para padrões fixos. RegExp é útil quando o padrão é montado dinamicamente, mas exige atenção ao escape dentro de strings.
test() para perguntas booleanas
/^\d+$/.test('12345') // trueÉ uma boa escolha quando você só precisa saber se houve match.
exec() e grupos nomeados
const re = /(?<usuario>[\w.-]+)@(?<dominio>[\w.-]+)/;
const m = re.exec('dev@site.com');
console.log(m.groups.usuario);O mesmo conceito aparece no Raio-X do RegexArena.
matchAll() para várias ocorrências
const matches = [...texto.matchAll(/\b\d+\b/g)];
Com a flag g, você consegue iterar sobre todas as ocorrências e seus grupos.
replace() e replaceAll()
'123.456.789-00'.replace(/\D/g, '') // 12345678900
Regex também é muito usada para normalização antes da validação de negócio.
Como ler o padrão em partes
Em vez de memorizar a expressão inteira, leia cada bloco pela responsabilidade que ele cumpre:
/\d+/gliteral com flag g; o padrão aparece diretamente no código.new RegExp("\\d+", "g")em string JavaScript a barra precisa de escape adicional.test()responde se existe correspondência.matchAll()é útil quando você precisa iterar por matches e grupos de uma expressão global.Onde Regex agrega valor aqui
É ideal para validação leve, extração, busca e transformação de strings. Para parsers complexos, prefira estruturas específicas do domínio.
Erros comuns
- Esquecer o escape duplo ao montar RegExp a partir de string.
- Reutilizar uma Regex global com test() sem entender lastIndex.
- Usar replace sem revisar grupos de captura e referências $1/nomeadas.
- Interpolar entrada do usuário diretamente em uma Regex sem escapar metacaracteres.
Teste e pratique
Use o Playground para experimentar o padrão com seus próprios dados e depois leve o conceito para as fases do jogo, onde os casos positivos e negativos são avaliados automaticamente.
Leve o JavaScript Regex para a prática
Use os exercícios 19, 20, 24, 28 e 29 para praticar captura, identificadores, grupos nomeados e extração antes de voltar ao código.
Praticar Regex + JavaScript