1. O Que E uma Expressao Regular
Uma expressao regular (regex ou regexp) e um padrao de busca usado para encontrar, validar ou manipular strings de texto. Presentes em praticamente todas as linguagens de programacao, as expressoes regulares sao uma das ferramentas mais poderosas — e muitas vezes mal compreendidas — do arsenal de um desenvolvedor.
No JavaScript, o motor de regex e integrado nativamente e segue o padrao ECMAScript, com suporte a grupos de captura, lookaheads, lookbehinds e Unicode desde as versoes mais recentes da linguagem.
2. Sintaxe Basica e Metacaracteres
A maioria dos caracteres em um regex representa a si mesmo. Porem, alguns caracteres sao especiais (metacaracteres) e precisam ser escapados com \ para serem interpretados literalmente:
- \d — qualquer digito (0-9)
- \w — qualquer caractere de palavra (letras, digitos, _)
- \s — qualquer espaco em branco
- . — qualquer caractere exceto nova linha
- ^ — inicio da string (ou linha com flag m)
- $ — fim da string (ou linha com flag m)
- * — zero ou mais repeticoes
- + — uma ou mais repeticoes
- ? — zero ou uma repeticao (torna o elemento opcional)
3. Grupos de Captura
Grupos de captura sao criados com parenteses () e permitem extrair partes especificas de um match. Sao numerados da esquerda para a direita, comecando em 1. No JavaScript, voce acessa os grupos via match[1], match[2], etc.
Grupos nao-capturantes ((?:)) agrupam sem capturar, util quando voce precisa agrupar para aplicar quantificadores sem precisar do valor capturado.
"Nossa ferramenta exibe cada grupo de captura com uma cor diferente, tornando visual e imediato entender como o regex esta interpretando o seu texto."
4. Flags e Seus Usos
As flags modificam o comportamento do regex. As mais usadas no dia a dia sao g (global, busca todos os matches) e i (case insensitive). A flag m e essencial ao trabalhar com textos multilinhas, e s faz o ponto incluir quebras de linha.
5. Exemplos Praticos para o Dia a Dia
Alguns dos casos de uso mais comuns para regex no desenvolvimento brasileiro:
- Validar e-mail: detectar endereco de e-mail com estrutura valida antes de enviar ao servidor
- Formatar CPF/CNPJ: inserir pontuacao automaticamente a partir de digitos brutos
- Extrair telefones: normalizar numeros em diferentes formatos em uma base de dados
- Validar datas: checar formato DD/MM/AAAA antes de parsear
- Limpar HTML: remover tags HTML de um texto
6. Perguntas Frequentes
O regex testado aqui funciona igual no meu codigo?
Sim. A ferramenta usa o motor de regex nativo do JavaScript (o mesmo do seu navegador e do Node.js), entao o comportamento e identico.
Por que meu regex esta em loop infinito?
Isso pode acontecer com padroes que permitem match de string vazia (como .* sem ancora) em combinacao com a flag g. A ferramenta tem protecao basica, mas recomendamos testar com strings curtas primeiro.
O que sao lookaheads e lookbehinds?
Sao assercoes de posicao que verificam se um padrao existe antes ou depois do ponto atual, sem incluir esses caracteres no match. (?=B) (lookahead positivo) verifica se B vem a seguir. (?<=A) (lookbehind positivo) verifica se A veio antes.