JavaScript

Regex em JavaScript: RegExp, test, match, exec e replace

JavaScript possui suporte nativo a Regex e APIs suficientes para validação, extração, busca e transformação de strings.

Ideia central: Regex valida ou encontra padrões de texto. Quando houver regra de negócio, cálculo ou semântica, use código complementar em vez de forçar tudo para dentro da expressão.
EM 30 SEGUNDOS

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:

  1. 01Use literal quando o padrão é conhecido no código.
  2. 02Use RegExp quando o padrão é construído dinamicamente.
  3. 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.
QUANDO USAR

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.

ARMADILHAS

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.

Praticar no jogoAbrir Playground

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

Continue aprendendo

← Voltar ao hub de Regex