Três grandes casos práticos de regex
Na prática, regex se resume a três tipos de operação:
- Validação: verificar se o texto segue um formato (ex.: e-mail, telefone)
- Extração: localizar no texto o que corresponde a um padrão (ex.: todas as URLs, todos os valores)
- Substituição: trocar a parte que corresponde ao padrão por outra (ex.: unificar formato de data, mascarar telefone)
Veja casos reais a seguir.
Casos de validação
Validar número de telefone
Regex: ^1[3-9]\d{9}$
Dica: use ^ e $ para ancorar início e fim, garantindo que a string inteira seja um número de telefone e não um texto maior que o contém. O segundo dígito restrito a 3~9 corresponde à regra atual de prefixos.
Validar e-mail
Regex: ^[\w.-]+@[\w.-]+.\w+$
Dica: a versão simplificada é suficiente; uma regex de e-mail estrita é muito complexa. Em projetos reais, use a versão simplificada + envio de e-mail de verificação como dupla garantia.
Validar documento de identidade
Regex: ^\d{17}[\dXx]$
Dica: 18 caracteres, os 17 primeiros são dígitos e o último é dígito ou X. Esta regex valida apenas o formato, não o dígito verificador.
Validar URL
Regex: ^https?://[\w.-]+
Dica: começa com http ou https, seguido do domínio. Versão simplificada; uma regex completa de URL é extremamente complexa.
Casos de extração
Extrair todos os números de telefone
Regex: 1[3-9]\d{9}
Sem ^ e $, encontra todos os números de telefone no texto. Use correspondência global (flag g).
Extrair todas as URLs
Regex: https?://[\w./?=&%-]+
Corresponde a URLs que começam com http(s). Os caracteres reais de URL são mais complexos; ajuste o conjunto de caracteres conforme necessário.
Extrair todos os valores
Regex: [¥$]\d+(?:.\d+)?
Corresponde a valores que começam com ¥ ou $, com casa decimal opcional. Ex.: ¥100, $99.9.
Extrair conteúdo de tags HTML
Regex: <a[^>]*>([^<]+)
Extrai o texto dentro da tag a. O grupo entre parênteses captura o conteúdo textual. Note que usar regex para tratar HTML não é robusto; para HTML complexo, um analisador é mais estável.
Casos de substituição
Mascarar número de telefone
Substituir os 4 dígitos do meio por asteriscos: 1[3-9]\d{9} trocado mantendo os 3 primeiros e os 4 últimos.
Na prática, use grupos de captura: regex (1[3-9]\d)\d{4}(\d{4}), substituir por 1\1****\2. \1 e \2 referenciam os grupos.
Unificar formato de data
Converter 2026/07/12 em 2026-07-12: regex (\d{4})/(\d{2})/(\d{2}), substituir por \1-\2-\3.
Remover espaços extras
Transformar vários espaços consecutivos em um: regex \s+, substituir por um único espaço.
Remover tags HTML
Tirar todas as tags HTML deixando só o texto: regex <[^>]+>, substituir por vazio. Note que isso pode descartar > dentro de atributos de tags; em situações complexas use um analisador.
Dicas de depuração
Valide passo a passo com a ferramenta de teste
Use a ferramenta de teste de regex:
- Insira a regex
- Insira o texto de teste (com exemplos que devem e que não devem corresponder)
- Veja os resultados destacados
- Ajuste a regex gradualmente até o resultado ficar correto
Corresponda primeiro, otimize depois
Escreva primeiro uma regex que corresponde; só então pense em otimizar (desempenho, precisão). Não tente a perfeição logo de cara.
Use visualização de regex online
Para regex complexo, use ferramentas de visualização para decompor a estrutura e entender o significado de cada parte.
Atenção aos casos-limite
- String vazia
- Strings com correspondência apenas parcial
- Strings com caracteres especiais
- Strings muito longas
Padrões de regex reutilizáveis
Caracteres chineses
[\u4e00-\u9fa5]+
Código postal
^\d{6}$
Número de QQ
^[1-9]\d{4,10}$
Cor hexadecimal
^#[0-9a-fA-F]{6}$
Número de versão
^\d+.\d+.\d+$
Armadilhas comuns
Correspondência gananciosa
.* captura demais. Para extrair conteúdo de tags, use [^<]+ em vez de .*, evitando correspondência entre tags.
Caracteres especiais sem escape
Corresponder metacaracteres como ponto, asterisco, interrogação exige escape. Para corresponder à própria barra invertida, escreva \.
Correspondência entre linhas
Por padrão, . não corresponde a quebras de linha. Para tratar texto multilinha, ative o modo single-line ou use [\s\S] para corresponder a qualquer caractere.
Problemas de desempenho
Catastrophic backtracking (retrocesso catastrófico): quantificadores aninhados como (a+)+ ficam extremamente lentos em algumas entradas. Em regex complexo, preste atenção ao desempenho; para textos muito longos, corte antes de corresponder.
Resumo
A prática de regex se divide em validação, extração e substituição. A validação ancora com ^ e $, a extração usa correspondência global e a substituição usa referências a grupos de captura. Ao escrever regex, teste primeiro com a ferramenta e só depois otimize. Memorize alguns padrões comuns (telefone, e-mail, data, URL) e o dia a dia fica coberto. A ferramenta de teste de regex do DocsAll roda no navegador, testando enquanto você escreve, sem enviar o texto.