Expressões Regulares em JavaScript com Exemplos para Node.js
Expressões regulares (regex ou regexp) são uma ferramenta poderosa para buscar, substituir e extrair informações textuais. Em JavaScript e Node.js, elas são usadas em toda parte: desde validação de formulários até análise de logs e processamento de requisições. Este artigo ajudará você a dominar a sintaxe das expressões regulares com exemplos práticos que podem ser executados imediatamente no Node.js.
1. Criando Expressões Regulares em JavaScript
Em JavaScript, existem duas maneiras de criar uma expressão regular:
- Sintaxe literal — o padrão é colocado entre barras
/pattern/flags. Recomendado para padrões estáticos. - Construtor RegExp —
new RegExp('pattern', 'flags'). Usado quando o padrão é formado dinamicamente.
// Sintaxe literalconst regexLiteral = /hello/i;
// Construtor RegExpconst pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');
console.log(regexLiteral.test('Hello World')); // trueconsole.log(regexConstructor.test('Hello World')); // true2. Métodos Principais para Trabalhar com Expressões Regulares
No Node.js e nos navegadores, quatro métodos-chave estão disponíveis para trabalhar com regex. Vamos analisar cada um com exemplos.
Método test()
Verifica se a string contém uma correspondência com o padrão. Retorna true ou false.
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;console.log(emailPattern.test('user@example.com')); // trueconsole.log(emailPattern.test('invalid-email')); // falseMétodo exec()
Procura por uma correspondência e retorna um array com detalhes (a própria correspondência, grupos, índice, string de entrada). Se não houver correspondência — null.
const text = 'Preço: 1500 rublos, desconto: 300 rublos';const regex = /(\\d+)\\srublos/g;let match;
while ((match = regex.exec(text)) !== null) { console.log(`Encontrado: ${match[1]} rublos`); // Saída: "Encontrado: 1500 rublos" // Saída: "Encontrado: 300 rublos"}Método match()
Chamado na string. Retorna um array de correspondências (com a flag g) ou informações detalhadas (sem a flag g).
const logLine = 'Erro 404: página não encontrada';const errorRegex = /(\\d{3}):\\s(.+)/;const result = logLine.match(errorRegex);
console.log(result[0]); // '404: página não encontrada'console.log(result[1]); // '404'console.log(result[2]); // 'página não encontrada'Método replace()
Substitui as correspondências pela string especificada ou resultado de uma função. Perfeito para formatação de dados.
const phone = '+7 (999) 123-45-67';const cleanPhone = phone.replace(/[\\s\\-\\(\\)\\+]/g, '');console.log(cleanPhone); // '79991234567'
// Substituição usando gruposconst date = '2024-01-15';const formattedDate = date.replace(/(\\d{4})-(\\d{2})-(\\d{2})/, '$3.$2.$1');console.log(formattedDate); // '15.01.2024'3. Símbolos Principais e Flags das Expressões Regulares
Para trabalhar eficientemente com regex, é preciso entender os metacaracteres básicos e as flags. Aqui estão os principais:
Símbolos para busca
.— qualquer caractere (exceto quebra de linha)\\d— dígito (0-9)\\w— letra, dígito ou sublinhado\\s— caractere de espaço em branco^— início da string$— fim da string*— 0 ou mais repetições+— 1 ou mais repetições?— 0 ou 1 repetição{n,m}— de n a m repetições
Flags
g— busca global (todas as correspondências)