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) eu(Unicode) são adicionadas automaticamente. Com 'Ignorar maiúsculas/minúsculas' ativado, soma-sei. - 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,
$1e$2são os grupos entre parênteses,$&é a correspondência inteira e$$é um único caractere$.\nvira quebra de linha e\t, tabulação. - Se o padrão tiver erro, a etapa não altera a entrada e mostra um erro.
\stambé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.comcorresponde também aexampleXcom. - 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