Expressões Regulares em JavaScript: Guia Completo com Exemplos
Expressões regulares (regexp ou regex) são uma ferramenta poderosa para buscar, substituir e validar dados textuais. Em JavaScript, especialmente no ambiente Node.js, expressões regulares são usadas em toda parte: desde o processamento de logs e parsing de URLs até a validação de formulários e marcação de texto. Neste artigo, vamos abordar os fundamentos do trabalho com expressões regulares em JavaScript, examinar a sintaxe, os métodos e fornecer exemplos práticos para Node.js.
Criando Expressões Regulares em JavaScript
Em JavaScript, existem duas maneiras de criar uma expressão regular:
- Notação literal — a maneira mais conveniente e comum:
/pattern/flags. - Construtor RegExp — usado quando o padrão é criado dinamicamente:
new RegExp('pattern', 'flags').
Exemplos:
// Notação literalconst regexLiteral = /hello/i; // flag i — ignorar maiúsculas/minúsculas
// Construtor RegExpconst pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');
console.log(regexLiteral.test('Hello, world!')); // trueconsole.log(regexConstructor.test('HELLO')); // trueFlags (Modificadores) Principais
i— ignorar maiúsculas/minúsculas (case-insensitive).g— busca global (encontra todas as correspondências, não apenas a primeira).m— modo multilinha (as âncoras^e$funcionam para cada linha).s— modo "dotall" (o ponto.inclui o caractere de nova linha).u— suporte completo a Unicode.y— modo "sticky" (busca a partir da posição atual).
Métodos de Expressões Regulares em JavaScript
Em JavaScript, expressões regulares trabalham em conjunto com vários métodos de strings e do próprio RegExp.
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')); // falseMétodo exec()
Executa uma busca e retorna um array com os resultados ou null. Útil para extrair grupos.
const urlRegex = /https?:\\/\\/([^\\/]+)\\/(.*)/;const url = 'https://pythonlib.ru/regular-expressions';const match = urlRegex.exec(url);
if (match) { console.log('Domínio:', match[1]); // pythonlib.ru console.log('Caminho:', match[2]); // regular-expressions}Métodos de String que Trabalham com regexp
str.match(regex)— retorna um array de correspondências (ounull).str.matchAll(regex)— retorna um iterador de todas as correspondências (com grupos).str.replace(regex, replacement)— substitui as correspondências.str.search(regex)— retorna o índice da primeira correspondência (-1 se não houver).str.split(regex)— divide a string por uma expressão regular.
const text = 'Código: 12345, artigo: ABC-6789';
// match — encontrar todos os dígitosconst numbers = text.match(/\\d+/g);console.log(numbers); // ['12345', '6789']
// replace — substituir hífen por dois pontosconst cleaned = text.replace(/-/g, ':');console.log(cleaned); // 'Código: 12345, artigo: ABC:6789'
// split — dividir por vírgulas e espaçosconst parts = text.split(/,\\s*/);console.log(parts); // ['Código: 12345', 'artigo: ABC-6789']Padrões Básicos e Caracteres Especiais
Para criar padrões precisos, são usados metacaracteres e quantificadores. Aqui estão os mais importantes:
Caracteres Básicos
- < ```