Expressões Regulares em JavaScript com Exemplos: na Prática
Expressões regulares (RegExp) são uma ferramenta poderosa para buscar, substituir e validar strings. Em JavaScript e Node.js, elas são usadas em toda parte: desde validação de formulários até análise de logs. Neste artigo, vamos abordar os fundamentos da sintaxe, métodos populares e resolver alguns problemas práticos.
1. Criando uma Expressão Regular
Em JavaScript, existem duas maneiras de criar uma expressão regular:
- Notação literal (recomendada):
/padrão/flags - Construtor
new RegExp('padrão', 'flags')
Exemplo:
// Notação literalconst regexLiteral = /hello/i;
// Construtor (útil quando o padrão é dinâmico)const pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');
console.log(regexLiteral.test('Hello World')); // trueconsole.log(regexConstructor.test('HELLO')); // true2. Métodos Principais de RegExp e String
Para trabalhar com expressões regulares em JavaScript, são usados dois tipos de métodos: os métodos do próprio objeto RegExp e os métodos de strings.
2.1 Método test()
Verifica se há uma correspondência na string. Retorna true ou false.
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;console.log(emailRegex.test('user@example.com')); // trueconsole.log(emailRegex.test('invalid-email')); // false2.2 Método exec()
Busca uma correspondência e retorna um array com informações detalhadas (ou null). Útil para extrair dados.
const str = 'Preço: 1500 reais, desconto: 200 reais';const priceRegex = /(\\d+)/g;let match;
while ((match = priceRegex.exec(str)) !== null) { console.log(`Número encontrado: ${match[1]}`);}// Saída:// Número encontrado: 1500// Número encontrado: 2002.3 Método de string match()
Funciona de forma semelhante ao exec(), mas é chamado a partir da string.
const text = 'JavaScript é legal! JS é usado em todo lugar.';const result = text.match(/JS/g);console.log(result); // [ 'JS', 'JS' ]2.4 Método de string replace()
Substitui as correspondências encontradas pela string especificada ou resultado de uma função.
const phone = '+7 (123) 456-78-90';const cleaned = phone.replace(/[\\s\\-\\(\\)\\+]/g, '');console.log(cleaned); // 71234567890
// Substituição usando grupos de capturaconst date = '2024-03-15';const formatted = date.replace(/(\\d{4})-(\\d{2})-(\\d{2})/, '$3.$2.$1');console.log(formatted); // 15.03.20242.5 Método de string search()
Retorna o índice da primeira correspondência ou -1.
const sentence = 'Aprenda JavaScript no PythonLib';const index = sentence.search(/javascript/i);console.log(index); // 83. Flags e Caracteres Especiais: Exemplos Práticos
As flags alteram o comportamento da busca. As mais populares:
g— busca global (encontra todas as correspondências, não apenas a primeira).i— busca sem distinção entre maiúsculas e minúsculas.m— modo multilinha (as âncoras^e$funcionam em cada linha).
Exemplo com a flag m:
const multiLineText = `Primeira linhasegunda linhaTerceira linha`;
// Sem a flag mconsole.log(multiLineText.match(/^segunda/)); // null
// Com a flag mconsole.log(multiLineText.match(/^segunda/m)); // [ 'segunda' ]