A Folha de Cálculo do Expressão Regular para Desenvolvedores Padrões a Serem Recordar
O regex é uma das habilidades que rende frutos em qualquer linguagem que você escrever. O mesmo padrão que valida um e-mail no Python remove strings de consulta no Go e limpa entrada de formulário no JavaScript. Aprenda uma vez, use em todos os lugares.
Isso não é um guia de sintaxe. Trata-se dos padrões que você realmente usa em projetos reais — os que aparecem em validadores de formulários, parsers de logs, rotadores de URLs e canais de dados. A tabela abaixo constitui o núcleo do assunto. O texto ao redor dela aborda onde as pessoas acabam queimando.
Os Padrões que Vale a Penhora
Estes 11 padrões cobrem os cenários que surgem repetidamente em código de produção. Use Testador de Regex validá-los antes de conectá-los com seus próprios dados.
| Padrão | O que ele corresponde | Jogo de Exemplo | Notas |
|---|---|---|---|
^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$ | Endereço de email | user@example.com | Em projeto por padrão — o verdadeiro RFC 5322 é um buraco de minério. Ancorar com ^$. |
https?:\/\/[\w\-._~:/?#[\]@!$&'()*+,;=%]+ | URL HTTP/HTTPS | https://example.com/path?q=1 | Não valida a estrutura — apenas confirma que parece ser uma URL. |
^(\d{1,3}\.){3}\d{1,3}$ | Endereço IPv4 (formato apenas) | 192.168.1.1 | Corrida 999.999.999.999 — valide o intervalo no código, não na expressão regular. |
^(\+\d{1,3}[\s-])?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$ | Número de telefone norte-americano | (555) 867-5309 | Trata delimitadores comuns. Formatos internacionais variam demais para um único padrão. |
[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} | UUID versão 4 | 550e8400-e29b-41d4-a716-446655440000 | Insensível à maiúsculas — use i adicionar ou remover A-F a classes de caracteres. |
^[a-z0-9]+(?:-[a-z0-9]+)*$ | link-para-a-url | my-article-title | Sem hífen inicial ou final, sem hífen consecutivo. |
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ | Data ISO 8601 (AAAA-MM-DD) | 2026-04-10 | Valida formato e faixa de valores, mas não a validade do calendário (fevereiro 31 passa). |
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ | cor de hexadecimal CSS | #ff6600 ou #f60 | Ambigramas de 3 e 6 dígitos. Adicione {8} para código hexadecimal RGBA com 8 dígitos. |
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([\w.-]+))?(?:\+([\w.-]+))?$ | Versão de versão semântica | 1.2.3-beta.1+build.42 | Capta metadados de pré-lançamento e construção como grupos opcionais. |
\b(?:\d{4}[\s-]?){3}\d{4}\b | Número de cartão de crédito (mascarado, não valide) | 4111 1111 1111 1111 | Utilize para mascaramento em logs, não para validação. Verificação de algoritmo de Luhn exige código. |
\s+ | Espaço em branco corre | "hello world" → "hello world" | Substitua por um único espaço para normalização de espaços. |
Onde os padrões se rompem na prática
Avido vs. Desleal Correspondência
Quantificadores como * e + são avarentos por padrão — consomem o máximo possível. Isso te ataca ao extrair conteúdo entre delimitadores. <.+> em <b>bold</b> coincide com a string inteira, não <b>Troque para modo de carregamento lento .+? parar no primeiro delimitador fechado em vez do último.
Ancoragem: Quando ^ e $ Não São Suficientes
Sem ancoragens, um padrão pode corresponder em qualquer lugar de uma cadeia de caracteres. \d+ coincidem abc123def — ele encontra os dígitos no meio. Para validação completa da string, envolva os padrões em ^...$Em modo de linha múltipla (m paralelepípedo) ^ e $ mantimentos os limites das linhas, não as bordas completas da string. Se você está validando um único valor (um e-mail ou um UUID), defina m intencionalmente, não por hábito.
O Custo da Bandeira de Linha Múltipla
O m a bandeira muda o que ^ e $ médio. O s O flag **dotAll** altera . correlações — sem isso,
---
*(Note: The original text was incomplete and did not contain a full sentence, so this translation reflects only the visible portion.)* . Não corresponde aos caracteres de quebra de linha. Processamento de entradas de registro multilinha com .+Você precisa s ou [\s\S]+ como alternativa para motores que não suportam `dotAll`.
Testando Antes de Conectar
Não coloque um regex em uma aplicação e teste-o apenas com uma entrada de caminho feliz. Os padrões falham nos casos limites: caracteres Unicode, strings vazias, espaços em branco iniciais/finais ou entradas que são quase mas não exatamente válidas. Testador de Expressões Regulares IO Tools deixá você executar um padrão contra várias cadeias de teste simultaneamente, permitindo que verifique os casos válidos e os inválidos lado a lado antes da entrega do código. Ferramenta de Folheto de Regras de Expressões Regulares é útil quando você está no meio de criar um padrão e precisa de uma rápida referência sintática sem sair do seu navegador.
Ao testar, construa uma matriz: o que deve coincidir, o que definitivamente não deve, e o que está na fronteira. Um validador de e-mail que aceita user@ rejeita user+tag@example.co.uk É pior do que nenhum validador algum.
Linguagens Curiosidades que Vale a Penhora
Os padrões na tabela acima são amplamente portáteis, mas o motor faz diferença nos detalhes.
- JavaScript Usa o motor de expressões regulares ECMA. Grupos de captura nomeados (
(?<name>...)São suportados em ES2018+.vA flag introduzida no **ES2024** adiciona notação de conjunto e escapamentos de propriedades Unicode. Os *lookbehind* funcionam; os *lookbehind* são compatíveis desde o **ES2018+**, mas possuem restrições de comprimento variável em algumas versões mais antigas do V8. - Pitão usa o
remódulo (adjacente ao PCRE, mas não idêntico). Ore.compile()o padrão vale a pena usar — padrões compilados são mais rápidos quando chamados repetidamente em laços. Uma diferença sutil: a linguagem **Python**\bA fronteira de palavra é consciente do Unicode por padrão, então funciona com caracteres de palavras não ASCII. O JavaScript\bé ASCII apenas se você usaruouvbandera. - Ir Usa sintaxe do RE2, que exclui deliberadamente referências de retrocesso e olhares para frente. Isso é uma decisão de segurança — o RE2 garante correspondência em tempo linear, evitando retrocessos catastróficos. Se você está portando um padrão de Python ou JavaScript para Go e usa olhares para frente ou referências de retrocesso, precisará reorganizar a lógica.
Exemplo Prático: Validação de Emails em Diferentes Idiomas
O mesmo padrão, duas implementações: um validador de formulário em JavaScript e uma verificação de entrada em Python.
// JavaScript — client-side form validation
const EMAIL_RE = /^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$/;
function validateEmail(input) {
const value = input.trim();
if (!EMAIL_RE.test(value)) {
throw new Error(`Invalid email address: ${value}`);
}
return value;
}
// Usage
document.querySelector('#signup-form').addEventListener('submit', (e) => {
e.preventDefault();
try {
const email = validateEmail(e.target.email.value);
submitForm({ email });
} catch (err) {
showError(err.message);
}
});
# Python — API request validation
import re
EMAIL_RE = re.compile(r'^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$')
def validate_email(value: str) -> str:
value = value.strip()
if not EMAIL_RE.match(value):
raise ValueError(f"Invalid email address: {value!r}")
return value
# Usage in a Flask route
@app.route('/signup', methods=['POST'])
def signup():
try:
email = validate_email(request.json.get('email', ''))
except ValueError as e:
return jsonify({'error': str(e)}), 400
# continue with valid email...
Ambos seguem o mesmo padrão subjacente. A única diferença significativa é a de **Python**. re.compile() pré-compila o padrão para evitar a reprocessamento em cada chamada repetida — vale a pena fazer isso em qualquer caminho quente.
Tenha um **Rascunho Pessoal**
Os padrões acima lidam com os casos comuns, mas você acumulará seus próprios ao longo do tempo — formatos de log específicos para sua pilha, esquemas de identificadores de sistemas internos e formatos de datas que sua equipe de dados insiste em usar. Um arquivo curado e testado com padrões prontos para colar é mais valioso do que memorizar as regras sintáticas. Teste-os uma vez, anote o propósito deles e faça referência a eles em vez de reconstruí-los do zero cada vez.
Instale nossas extensões
Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida
恵 O placar chegou!
Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!
Ferramentas essenciais
Ver tudo Novas chegadas
Ver tudoAtualizar: Nosso ferramenta mais recente foi adicionado em Abr 15, 2026
