O que são Expressões Regulares (Regex)?
Expressões regulares (regex) são sequências de caracteres que formam um padrão de busca. Elas são usadas para validar, extrair e substituir texto de forma poderosa e concisa. Praticamente todas as linguagens de programação suportam regex — JavaScript, Python, PHP, Java, Go — e elas são essenciais para validação de dados, parsing de textos e processamento de strings.
Sintaxe básica: o ponto . corresponde a qualquer caractere. O asterisco * significa "zero ou mais vezes". O mais + significa "uma ou mais vezes". Colchetes [] definem classes de caracteres — [a-z] aceita letras minúsculas, [0-9] aceita dígitos. Chaves {} definem quantificadores exatos — {3} aceita exatamente 3 ocorrências.
Regex é usado em validação de formulários (email, CPF, telefone, CEP), extração de dados de logs e textos, substituição avançada de strings, roteamento de URLs (Express.js, Laravel) e processamento de dados. Dominar regex é uma habilidade que economiza horas de código e abre possibilidades de processamento de texto antes impossíveis.
Patterns Comuns e Dicas
- CPF:
\d{3}\.\d{3}\.\d{3}-\d{2}— Valida formato de CPF brasileiro. - Email:
^[\w.-]+@[\w.-]+\.\w+$— Validação básica de email. - Telefone BR:
\(?\d{2}\)?\s?\d{4,5}-?\d{4}— Fixo e celular brasileiro. - CEP:
\d{5}-?\d{3}— CEP no formato XXXXX-XXX. - URL:
https?:\/\/[\w.-]+(?:\.[\w.-]+)+[\w\-._~:/?#\[\]@!$&'()*+,;=%]* - Use parênteses
()para criar grupos de captura que podem ser referenciados com\1,\2.
Perguntas Frequentes
Quais são as flags (sinalizadores) mais importantes?
g (global) encontra todas as ocorrências, não apenas a primeira. i (case-insensitive) ignora maiúsculas/minúsculas. m (multiline) faz ^ e $ funcionarem por linha. s (dotAll) faz o ponto . incluir quebras de linha. No JavaScript, as flags são passadas no construtor: /pattern/flags.
Como validar um email com regex?
Uma regex simples: ^[\w.-]+@[\w.-]+\.\w{2,}$. Para validação completa (RFC 5322), a regex fica extremamente complexa. Na prática, use a validação básica para formatação e valide o email enviando um link de confirmação — é mais confiável que regex para emails.
Regex tem limite de performance?
Sim. Regex mal escritas podem causar "catastrophic backtracking", travando o navegador ou servidor. Evite padrões aninhados como (a+)+ em textos grandes. Ferramentas como regex101.com mostram o tempo de execução e alertam sobre possíveis problemas de performance.
Como funciona a substituição com regex?
Além de buscar, regex permite substituir texto usando grupos de captura. Exemplo: replace(/(\d{2})\/(\d{2})\/(\d{4})/, '$3-$2-$1') converte uma data de DD/MM/AAAA para AAAA-MM-DD. Grupos são referenciados com $1, $2, etc.
Regex funciona igual em todas as linguagens?
A sintaxe básica é similar, mas existem diferenças. PHP e Python suportam lookbehind ((?<=...)), enquanto JavaScript só suporta a partir do ES2018. O PHP usa delimitadores (/pattern/flags), Python usa r'pattern'. Sempre consulte a documentação da linguagem específica.
Esta ferramenta testa regex no navegador usando o motor de regex do JavaScript (V8/SpiderMonkey). Para regex em PHP, Python ou outras linguagens, resultados podem variar ligeiramente. Sempre teste a regex na linguagem-alvo antes de usar em produção.
