Testar regex online | Expressões regulares JavaScript | Awesome Toolkit

Testador de Expressões Regulares

Teste suas expressões regulares em tempo real. Correspondências destacadas, grupos de captura exibidos, flags configuráveis.

Por Marshkalk

Correspondências destacadas

Como usar o testador de Regex

  1. Introduza o seu padrão no campo Padrão.
  2. Ative flags conforme necessário: g encontra todas as correspondências, i ignora maiúsculas/minúsculas, m faz ^ e $ corresponderem a limites de linha, s faz . corresponder a quebras de linha.
  3. 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

TokenSignificado
.Qualquer caractere exceto quebra de linha
\d / \DDígito / não dígito
\w / \WCaractere de palavra [a-zA-Z0-9_] / não palavra
\s / \SEspaço em branco / não espaço
^ / $Início / fim de string (ou linha com flag m)
\bLimite 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|bAlternâ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:

FuncionalidadeJavaScript (esta ferramenta)PCRE (PHP, Python, Perl)RE2 (Go, Rust)
Lookbehind (?<=...)Largura fixa (ES2018+)Largura variávelApenas largura fixa
Retrorreferências SimSimNão
Grupos atómicos (?>...)NãoSimNão
Classes Unicode \p{L}Sim (com flag u)SimSim (por defeito)
\d corresponde a dígitos UnicodeNão (apenas ASCII sem u)Sim (PCRE2 por defeito)Não (apenas ASCII)

5 armadilhas frequentes

  • Backtracking catastrófico: Um padrão como (a+)+b numa 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, \d só corresponde a dígitos ASCII 0-9, não a dígitos arabico-indicos (٠-٩) ou outras formas Unicode. Adicione u e 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 flag m.
  • 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.pt também corresponde a exemploXpt. Escape os pontos literais: exemplo\.pt.