Skip to content
DocsAll
技巧

Expressões regulares na prática: casos comuns de processamento de texto

Timi Tian · Publicado em 24 de março de 2026 · Atualizado em 12 de julho de 2026
Expressão regularRegexProcessamento de texto

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:

  1. Insira a regex
  2. Insira o texto de teste (com exemplos que devem e que não devem corresponder)
  3. Veja os resultados destacados
  4. 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.

T
Timi Tian 创始人 / 全栈工程师

DocsAll 创始人,10 年全栈开发经验,专注浏览器端文档处理技术与隐私保护架构。前新加坡科技公司技术负责人。