O que são Expressões Regulares (Regex)
Expressões regulares (Regex) são uma linguagem de padrões usada para buscar, validar e processar texto.
Com regex, você pode:
encontrar partes específicas do texto (por exemplo, email, URLs, números)
validar formatos de dados (validação de formulários)
substituir e limpar texto
extrair dados estruturados de strings
Regex é amplamente utilizado em desenvolvimento, análise de dados, SEO e automação.
O que faz a ferramenta “Regex Tester”
Esta ferramenta permite testar expressões regulares em tempo real e ver imediatamente os resultados.
Com ela, você pode:
verificar se uma string corresponde a um padrão
visualizar todas as correspondências em um texto
depurar expressões complexas
testar diferentes variações de regex sem escrever código
Motores de Regex populares e suas diferenças
As expressões regulares não são totalmente universais. O suporte à sintaxe depende da linguagem de programação e do motor utilizado.
Motor | Uso | Características |
|---|
JavaScript (ECMAScript) | Navegadores, Node.js | Lookbehind limitado (depende da versão) |
PCRE | PHP, várias ferramentas | Um dos motores mais poderosos |
Python (re) | Python | Falta de alguns recursos do PCRE |
Java (Pattern) | Java | Sintaxe rigorosa |
.NET | C# | Recursos avançados |
Sempre teste seu regex no ambiente de destino. Preste atenção às diferenças de suporte a lookbehind e Unicode. Para compatibilidade multiplataforma, prefira padrões mais simples.
Flags (modificadores) de Regex
Flags são parâmetros que alteram como o padrão é processado. Elas permitem controlar o uso de maiúsculas/minúsculas, o escopo da busca (uma linha ou várias linhas) e a interpretação dos caracteres.
Flag | Significado |
|---|
i | Ignorar maiúsculas/minúsculas |
g | Busca global |
m | Modo multilinha |
s | Dotall (inclui \n em .) |
u | Unicode |
Caracteres especiais em Regex
Tipo | Símbolo | Descrição |
|---|
Âncoras (posições) | ^ | Início da string |
Âncoras (posições) | $ | Fim da string |
Âncoras (posições) | \b | Limite de palavra |
Âncoras (posições) | \B | Não é limite de palavra |
Metacaracteres | . | Qualquer caractere, exceto nova linha (\n) |
Metacaracteres | | | Operador OU |
Metacaracteres | \ | Caractere de escape |
Literais | a | Caractere “a” |
Literais | ab | String “ab” |
Quantificadores | * | 0 ou mais repetições |
Quantificadores | ? | 0 ou 1 repetição |
Quantificadores | + | 1 ou mais repetições |
Quantificadores | {5} | Exatamente 5 repetições |
Quantificadores | {5,} | 5 ou mais repetições |
Quantificadores | {5,10} | Entre 5 e 10 repetições |
Classes de caracteres | \s | Espaço em branco |
Classes de caracteres | \S | Não espaço em branco |
Classes de caracteres | \w | Caractere de palavra (alfanumérico + underscore) |
Classes de caracteres | \W | Não caractere de palavra |
Classes de caracteres | \d | Dígito |
Classes de caracteres | \D | Não dígito |
Sequências de escape | [\b] | Backspace |
Sequências de escape | \c | Caractere de controle |
Sequências de escape | \n | Nova linha |
Sequências de escape | \t | Tabulação |
Sequências de escape | \r | Retorno de carro |
Sequências de escape | \ZZZ | Caractere octal |
Sequências de escape | \xZZ | Caractere hexadecimal |
Sequências de escape | \0 | Caractere nulo |
Sequências de escape | \v | Tabulação vertical |
Grupos | (xyz) | Grupo de captura |
Grupos | (?:xyz) | Grupo não capturante |
Conjuntos e intervalos | [xyz] | Qualquer um de x, y, z |
Conjuntos e intervalos | [^xyz] | Qualquer exceto x, y, z |
Conjuntos e intervalos | [a-q] | Intervalo de a a q |
Conjuntos e intervalos | [0-7] | Intervalo de 0 a 7 |
Padrões de substituição | $` | Texto antes da correspondência |
Padrões de substituição | $' | Texto após a correspondência |
Padrões de substituição | $+ | Último grupo capturado |
Padrões de substituição | $& | Correspondência completa |
Padrões de substituição | $n | Grupo capturado (ex: $1, $2) |
Lookarounds | (?=xyz) | Lookahead positivo |
Lookarounds | (?!xyz) | Lookahead negativo |
Lookarounds | (?<=xyz) | Lookbehind positivo |
Lookarounds | (?<!xyz) | Lookbehind negativo |
Comentários | (?#comment) | Comentário (ignorado pelo motor) |
Padrões Regex comuns
Tarefa | Regex |
|---|
Apenas números | ^\d+$ |
Apenas letras latinas | ^[A-Za-z]+$ |
Data (DD.MM.YYYY) | \d{2}\.\d{2}\.\d{4} |
Domínio | ^[a-z0-9.-]+\.[a-z]{2,}$ |
URL | https?:\/\/[^\s]+ |
Slug | ^[a-z0-9-]+$ |
Email (básico) | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
Email (estrito) | ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ |
Telefone | ^\+?\d{7,15}$ |
Tags HTML | <[^>]+> |
Senha forte | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{12,}$ |
UUID | ^[0-9a-fA-F-]{36}$ |
Cor HEX | ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
IP (IPv4) | ^(\d{1,3}\.){3}\d{1,3}$ |
Endereço MAC | ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$ |
Erros comuns em Regex
Expressões regulares parecem simples, mas possuem muitas nuances.
Erros de sintaxe e lógica
Falta de escape: . corresponde a qualquer caractere → use \.
Uso incorreto de quantificadores: *, +, {} aplicam-se ao elemento anterior
Confusão entre greedy e lazy: .* é guloso → use .*? para mínimo
Problemas na correspondência de strings
Falta de âncoras ^ e $: correspondências podem ocorrer em qualquer parte da string
Sensibilidade a maiúsculas: "Test" ≠ "test" → use flag i
Espaços em branco: \s inclui tabs, quebras de linha etc.
Erros práticos
Uso de \w com Unicode: geralmente \w = [A-Za-z0-9_] (sem кирílico, etc.)
Parsing de formatos complexos (HTML, JSON) com regex: pouco confiável → use parsers
Padrões muito complexos: difíceis de manter e depurar
Problemas de performance