Text/Clean

Localizar e substituir: padrões práticos de expressão regular

13 padrões de localizar e substituir com regex do JavaScript para limpar texto: formato de data, ocultar telefones, apagar parênteses e usar grupos $1.

Localizar e substituir tem um modo simples e um modo de expressão regular. O modo simples procura exatamente o que foi digitado, e o modo expressão regular procura por padrões. Este guia reúne as regras do modo expressão regular e os padrões mais usados.

Regras de expressão regular desta ferramenta

  • A sintaxe é a de expressões regulares do JavaScript do navegador.
  • As flags g (substituir todas), m (multilinha) e u (Unicode) são adicionadas automaticamente. Com 'Ignorar maiúsculas/minúsculas' ativado, soma-se i.
  • Por causa da flag m, ^ e $ correspondem ao início e ao fim de cada linha, e não do texto inteiro.
  • Por causa da flag u, barras invertidas desnecessárias viram erro. Por exemplo, não se pode escrever \:; escreva :. Propriedades Unicode como \p{L} podem ser usadas.
  • No texto de substituição, $1 e $2 são os grupos entre parênteses, $& é a correspondência inteira e $$ é um único caractere $. \n vira quebra de linha e \t, tabulação.
  • Se o padrão tiver erro, a etapa não altera a entrada e mostra um erro.
\s também corresponde à quebra de linha. Para procurar só espaços sem passar para a linha seguinte, use [ \t].

Padrões práticos

O formato abaixo é 'localizar → substituir por'. Quando o texto de substituição for '(vazio)', deixe o campo em branco.

1. Mudar o formato de data

(\d{4})-(\d{2})-(\d{2})$1.$2.$3

2026-09-23  →  2026.09.23

Para mudar a ordem, troque a posição dos números dos grupos, como em $3/$2/$1.

2. Ocultar o meio de um número de celular

(01[016789])-?(\d{3,4})-?(\d{4})$1-****-$3

010-1234-5678  →  010-****-5678
01098765432    →  010-****-5432

Este padrão segue o formato dos celulares coreanos (prefixos 010, 011, 016 a 019); para outros países, ajuste o primeiro grupo ao formato local.

3. Ocultar o início de um e-mail

\b([A-Za-z0-9._%+-]{2})[A-Za-z0-9._%+-]*@$1***@

hong.gildong@example.com  →  ho***@example.com

4. Apagar parênteses e seu conteúdo

\s*\([^)]*\) → (vazio)

Lisboa (sede) Porto (filial)  →  Lisboa Porto

Estruturas com parênteses aninhados, como ((a)), podem não ser apagadas de uma só vez.

5. Apagar espaços no fim da linha

[ \t]+$ → (vazio)

6. Reduzir três ou mais quebras a uma linha vazia

\n{3,}\n\n

7. Apagar as vírgulas de milhar

(\d),(?=\d{3}\b)$1

1,234,567 USD  →  1234567 USD

8. Apagar a query string e o fragmento de URLs

(https?:\/\/[^\s?#]+)[?#]\S*$1

https://example.com/page?utm_source=a#top  →  https://example.com/page

9. Apagar o horário no início de registros de chat

^\[?\d{1,2}:\d{2}(?::\d{2})?\]?[ \t]* → (vazio)

[12:30] Olá a todos  →  Olá a todos

10. Inverter 'Sobrenome, Nome'

^([^,\n]+),[ \t]*(.+)$$2 $1

Kim, Minsu  →  Minsu Kim

11. Reduzir palavras repetidas a uma

\b(\w+)[ \t]+\1\b$1 (com 'Ignorar maiúsculas/minúsculas' ativado, pega também The the)

12. Separar hangul e letras latinas com espaço

(\p{Script=Hangul})([A-Za-z])$1 $2

한글abc  →  한글 abc

Útil em textos coreanos; trocando Hangul por outra escrita, como Han (ideogramas) ou Hiragana, a mesma ideia vale para outros idiomas.

13. Colocar números entre colchetes

\d+(?:\.\d+)?[$&]

Erros comuns

  • Usar o ponto (.) sem escape: em expressões regulares, . significa qualquer caractere. Para procurar um ponto final ou o ponto de um domínio, escreva \.. example.com corresponde também a exampleXcom.
  • O guloso .\*: <.*> pega de uma vez tudo, do primeiro < ao último > da linha. Aplicado a <b>x</b> <i>y</i>, apaga também o texto. Para pegar uma tag de cada vez, use <[^>]*> ou <.*?>.
  • O $ no texto de substituição: no modo expressão regular, para colocar um $ no texto de substituição, como num preço, escreva $$. No modo simples, $ entra literalmente.
  • Procurar caracteres especiais como texto: para procurar ( ) [ ] + ? *, coloque uma barra invertida antes. Se houver muitos símbolos, é mais simples desativar a expressão regular e usar o modo simples.

Trabalhar várias linhas de uma vez

Colocando \n no texto a procurar, você encontra a própria quebra de linha. Por exemplo, ,\n, junta as linhas que terminam em vírgula com a linha seguinte. Se o objetivo é apagar linhas inteiras, Filtrar linhas é mais simples que uma expressão regular. Para dividir o texto em frases, o critério 'Fim de frase' de Adicionar quebras de linha (dividir) é mais seguro.

A ordem importa

Você pode colocar várias etapas de localizar e substituir num pipeline, e elas são aplicadas de cima para baixo. O resultado de uma etapa é a entrada da seguinte, então muitas vezes é preciso limpar os espaços antes para o padrão casar. Colocando Remover espaços nas pontas e Reduzir espaços e tabulações repetidos antes, os padrões ficam mais simples.

Checklist

  • Para padrões por linha, use ^ e $.
  • Para não passar de uma linha para outra, use [ \t] em vez de \s.
  • Confira o resultado; se estiver errado, desative a etapa e corrija o padrão.

Última atualização: 2026-09-23