Correspondências destacadas
Grupos de captura
Como usar o testador de Regex
- Introduza o seu padrão no campo Padrão.
- Ative flags conforme necessário:
gencontra todas as correspondências,iignora maiúsculas/minúsculas,mfaz^e$corresponderem a limites de linha,sfaz.corresponder a quebras de linha. - Cole a sua string de teste, as correspondências são destacadas em tempo real e os grupos de captura são mostrados abaixo.
Referência rápida de sintaxe regex JavaScript
| Token | Significado |
|---|---|
. | Qualquer caractere exceto quebra de linha |
\d / \D | Dígito / não dígito |
\w / \W | Caractere de palavra [a-zA-Z0-9_] / não palavra |
\s / \S | Espaço em branco / não espaço |
^ / $ | Início / fim de string (ou linha com flag m) |
\b | Limite de palavra |
+ / * / ? | Um ou mais / zero ou mais / opcional |
{n,m} | Entre n e m repetições |
[abc] | Classe de caracteres |
(abc) | Grupo de captura |
(?:abc) | Grupo sem captura |
a|b | Alternância (a ou b) |
Padrões regex comuns
- Endereço de email:
[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,} - URL:
https?://[^\s/$.?#][^\s]* - Endereço IP:
\b(?:\d{1,3}\.){3}\d{1,3}\b - Data (AAAA-MM-DD):
\d{4}-\d{2}-\d{2} - Cor hexadecimal:
#(?:[0-9a-fA-F]{3}){1,2}\b
Quantificadores gananciosos vs. preguiçosos
Por padrão, os quantificadores (+, *) são gananciosos: correspondem ao máximo possível. Adicione ? após o quantificador para torná-lo preguiçoso (mínimo possível): +?, *?. Exemplo: <.+?> corresponde a tags HTML individuais em vez de tudo desde o primeiro < até o último >.
Diferenças entre motores: JavaScript vs PCRE vs RE2
A sintaxe regex é parecida entre motores mas comporta-se de forma diferente em pontos-chave. Um padrão que funciona no navegador pode falhar em PHP, Python ou Go:
| Funcionalidade | JavaScript (esta ferramenta) | PCRE (PHP, Python, Perl) | RE2 (Go, Rust) |
|---|---|---|---|
Lookbehind (?<=...) | Largura fixa (ES2018+) | Largura variável | Apenas largura fixa |
Retrorreferências | Sim | Sim | Não |
Grupos atómicos (?>...) | Não | Sim | Não |
Classes Unicode \p{L} | Sim (com flag u) | Sim | Sim (por defeito) |
\d corresponde a dígitos Unicode | Não (apenas ASCII sem u) | Sim (PCRE2 por defeito) | Não (apenas ASCII) |
5 armadilhas frequentes
- Backtracking catastrófico: Um padrão como
(a+)+bnuma longa cadeia de 'a' sem 'b' provoca backtracking exponencial e pode bloquear a sua aplicação. Evite quantificadores aninhados em padrões sobrepostos. Teste sempre com entrada longa que não corresponda. - \d e dígitos Unicode: Sem o flag
u,\dsó corresponde a dígitos ASCII 0-9, não a dígitos arabico-indicos (٠-٩) ou outras formas Unicode. Adicioneue use\p{N}para todos os dígitos Unicode. - ^ e $ sem o flag m: Por defeito,
^e$correspondem ao início e ao fim de toda a cadeia. Para âncoras por linha em texto multi-linha, adicione o flagm. - Quantificador ganancioso a comer demasiado:
<.+>em<b>texto</b>corresponde do primeiro<ao último>. Use o preguiçoso<.+?>para capturar uma tag de cada vez. - Pontos sem escape em padrões de domínio: O ponto corresponde a qualquer caráter.
exemplo.pttambém corresponde aexemploXpt. Escape os pontos literais:exemplo\.pt.