Expressões Regulares em TypeScript com Exemplos: na Prática

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Expressões Regulares em TypeScript: da Teoria à Prática

Expressões regulares (regex) são uma ferramenta poderosa para trabalhar com strings. Em TypeScript, elas não apenas permitem realizar busca, substituição e validação, mas também fornecem tipagem estrita, o que reduz a quantidade de erros em tempo de compilação. Neste artigo, vamos explorar como usar expressões regulares em TypeScript com exemplos reais: desde a validação de email até a extração segura de dados.



1. Criação e Tipagem de Expressões Regulares

Em TypeScript, uma expressão regular pode ser criada de duas formas: usando um literal ou o construtor RegExp. A primeira forma é preferível, pois é mais curta e não requer escape de barras invertidas.



// Literal (forma recomendada)const emailRegex: RegExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;

// Construtor (útil para padrões dinâmicos)const pattern: string = 'hello';const dynamicRegex: RegExp = new RegExp(pattern, 'gi');

console.log(emailRegex.test('user@example.com')); // trueconsole.log(dynamicRegex.test('Hello, world!')); // true (flag i ignora maiúsculas/minúsculas)


Observe a anotação de tipo : RegExp. O TypeScript infere automaticamente o tipo para literais, mas a indicação explícita ajuda a documentar o código.



2. Flags e sua Tipagem

As flags alteram o comportamento da expressão regular. Em TypeScript, o tipo das flags pode ser definido por um literal de string ou enumeração. Vamos considerar as principais flags:



  • g — busca global (não para após a primeira correspondência);
  • i — modo insensível a maiúsculas/minúsculas;
  • m — modo multilinha (^ e $ funcionam para cada linha);
  • s — o ponto corresponde ao caractere de nova linha;
  • u — suporte a Unicode;
  • y — busca a partir da última posição encontrada (sticky).


// Tipagem de flags via stringconst regexWithFlags: RegExp = /test/gim;

// Verificação de flagsconsole.log(regexWithFlags.flags); // "gim"console.log(regexWithFlags.global); // trueconsole.log(regexWithFlags.ignoreCase); // trueconsole.log(regexWithFlags.multiline); // true


Para flags dinâmicas, use o tipo string, mas é melhor restringi-lo a valores permitidos usando uma união de literais:



type RegexFlags = 'g' | 'i' | 'm' | 's' | 'u' | 'y';const flags: RegexFlags = 'gi'; // Erro: 'gi' não é uma flag individual// Correto: passar uma stringconst dynamicFlags: string = 'gi';const regex: RegExp = new RegExp('pattern', dynamicFlags);


3. Métodos RegExp e Tipagem de Resultados

Os principais métodos para trabalhar com expressões regulares em TypeScript:



  • test() — retorna boolean;
  • exec() — retorna RegExpExecArray | null;
  • match() — método da string, retorna RegExpMatchArray | null;
  • replace() — substitui correspondências e retorna uma string;
  • search() — retorna o índice da primeira correspondência ou -1.


Vamos considerar um exemplo com exec(), que dá acesso aos grupos de captura:



const dateRegex: RegExp = /(\\d{4})-(\\d{2})-(\\d{2})/;const dateStr: string = 'Hoje é 2025-03-15';

const match: RegExpExecArray | null = dateRegex.exec(dateStr);

if (match) { const [fullMatch, year, month, day] = match; console.log(`Ano: ${year}, Mês: ${month}, Dia: ${day}`); // Saída: Ano: 2025, Mês: 03, Dia: 15} else { console.log('Data não encontrada');}


Observe: match[0] é a correspondência completa, e os índices 1, 2, 3 são os grupos de captura. O TypeScript infere corretamente os tipos ao usar desestruturação.

Blogs

Book Recommendations