O que é uma expressão regular?
Uma expressão regular (regex) é um padrão que descreve texto, como "quatro dígitos, um hífen e dois dígitos". Ela é usada para validar dados, buscar em logs, extrair valores e substituir texto em massa. Este testador usa o motor JavaScript do seu navegador, então os resultados são os mesmos de String.prototype.match e replace em navegadores e no Node.js.
Como usar
- Digite o padrão sem as barras em volta e marque as flags de que precisa.
- Cole o texto de teste. Cada correspondência é destacada, com cores alternadas para separar as que ficam lado a lado.
- A tabela mostra a posição e os grupos de cada correspondência. Clique em uma linha para selecioná-la no texto.
- Preencha "Substituir por" para ver o resultado. Use
$1ou$<name>para os grupos e$¶ a correspondência inteira.
Exemplo: mudar o formato de datas
O padrão (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) encontra datas como 2024-03-15 e dá nome às três partes. Substituindo por $<day>/$<month>/$<year>, o resultado é:
15/03/2024
Referência rápida
| Sintaxe | Significado |
|---|---|
\d | Um dígito 0-9 |
\w | Uma letra, um dígito ou sublinhado |
\s | Espaço em branco: espaço, tab, quebra de linha |
. | Qualquer caractere exceto quebra de linha (com s: qualquer um) |
* + ? | 0 ou mais, 1 ou mais, 0 ou 1 |
{2,4} | Entre 2 e 4 vezes |
^ $ | Início e fim do texto (com m: de cada linha) |
\b | Limite de palavra |
[abc] [^abc] | Um entre a, b, c / qualquer um exceto eles |
a|b | a ou b |
(...) | Grupo de captura: $1, $2 na substituição |
(?:...) | Grupo sem captura |
(?<name>...) | Grupo nomeado: $<name> na substituição |
(?=...) (?!...) | Seguido de / não seguido de (lookahead) |
Perguntas frequentes
Qual tipo de expressão regular é usado?
O do JavaScript (ECMAScript), igual aos navegadores e ao Node.js. A maior parte da sintaxe também funciona em Java, Python, PHP e Go, mas há diferenças: o Python escreve grupos nomeados como (?P<name>...), e flags inline como (?i) no início do padrão não são aceitas aqui; use as caixas de flags.
Por que o teste parou por tempo limite?
Alguns padrões, principalmente com quantificadores aninhados como (a+)+$, fazem o motor testar uma quantidade enorme de combinações ("backtracking catastrófico"). O testador roda em segundo plano e para depois de 2 segundos para a página não travar. Reescreva o padrão para evitar repetições aninhadas: o mesmo padrão também pode travar o seu servidor.
Preciso escrever duas barras invertidas?
Aqui não: digite \d direto. Quando copiar o padrão para uma string em código Java, C# ou JavaScript (não um literal /.../), cada barra invertida precisa ser escrita duas vezes, como em "\\d{4}".
Meu texto é enviado para um servidor?
Não. A busca e a substituição acontecem totalmente no navegador, então você pode testar padrões com logs ou dados que não devem sair do seu computador.