Expressões Regulares em TypeScript: sintaxe, métodos e exemplos
Expressões regulares (regex) são uma ferramenta poderosa para trabalhar com strings. Em TypeScript, elas permitem não apenas buscar, substituir e verificar texto, mas também obter tipagem estrita dos resultados. Neste artigo, abordaremos todos os aspectos do trabalho com RegExp em TypeScript: desde a sintaxe básica até técnicas avançadas com exemplos de código.
1. Criando expressões regulares em TypeScript
Em TypeScript, assim como em JavaScript, existem duas maneiras de criar uma expressão regular:
Sintaxe literal
A forma mais comum e conveniente é usar barras:
const pattern: RegExp = /hello/gi;Aqui, g é busca global, i é insensibilidade a maiúsculas/minúsculas. O tipo RegExp é inferido automaticamente, mas pode ser especificado explicitamente para legibilidade.
Construtor RegExp
Usado quando o padrão é formado dinamicamente:
const searchTerm: string = "world";const dynamicPattern: RegExp = new RegExp(searchTerm, "gi");O segundo argumento é uma string com flags. O tipo do valor retornado é RegExp.
2. Métodos principais de RegExp e String
TypeScript herda todos os métodos do JavaScript, mas adiciona tipagem estrita a eles. Vamos analisar os principais métodos com exemplos.
Método test()
Verifica se há correspondência na string. Retorna boolean.
const emailRegex: RegExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;const email: string = "user@example.com";
const isValid: boolean = emailRegex.test(email);console.log(isValid); // trueMétodo exec()
Busca uma correspondência e retorna informações detalhadas. Retorna RegExpExecArray | null.
const text: string = "Preço: 1500 rublos, desconto: 200 rublos";const pricePattern: RegExp = /(\\d+)\\s*rublos/g;
let match: RegExpExecArray | null;while ((match = pricePattern.exec(text)) !== null) { console.log(`Encontrado: ${match[0]}, número: ${match[1]}`);}// Saída:// Encontrado: 1500 rublos, número: 1500// Encontrado: 200 rublos, número: 200Método match() da string
Funciona de forma semelhante ao exec(), mas é chamado na string. Retorna RegExpMatchArray | null.
const phone: string = "Contatos: +7 (999) 123-45-67";const phoneRegex: RegExp = /\\+7\\s*\\(\\d{3}\\)\\s*\\d{3}-\\d{2}-\\d{2}/;
const result: RegExpMatchArray | null = phone.match(phoneRegex);if (result) { console.log(`Telefone encontrado: ${result[0]}`); // Telefone encontrado: +7 (999) 123-45-67}Método replace()
Substitui correspondências por uma nova string. Retorna string. Suporta callback para substituições complexas.
function formatDate(input: string): string { const datePattern: RegExp = /(\\d{4})-(\\d{2})-(\\d{2})/; return input.replace(datePattern, "$3.$2.$1");}
const isoDate: string = "2025-03-10";const formatted: string = formatDate(isoDate);console.log(formatted); // "10.03.2025"Método split()
Divide a string por uma expressão regular. Retorna string[].
const data: string = "maçã;pêra;laranja;banana";const items: string[] = data.split(/;\\s*/);console.log(items); // ["maçã", "pêra", "laranja", "banana"]3. Flags e suas combinações
As flags controlam o comportamento da expressão regular. Em TypeScript, elas são definidas no literal ou no segundo argumento do construtor.
| Flag | Descrição | Exemplo |
|---|---|---|
g | Busca global (todas as correspondências) | /ab/g |
i | Insensibilidade a maiúsculas/minúsculas |