Regex para validar email, URL e dados web — padrões completos
Validação de dados é uma das tarefas mais críticas no desenvolvimento de aplicações web. Emails mal formatados, URLs inválidas ou endereços IP incorretos podem causar falhas em cascata e comprometer a experiência do usuário. Expressões regulares bem construídas são a primeira linha de defesa na validação de inputs. Neste artigo, apresentamos uma coleção cuidadosamente testada de regex para os tipos de dados web mais comuns, todas desenvolvidas e verificadas no Testador de Regex da WikiPlus para garantir precisão e cobertura adequada.
Regex para validação de endereços de email
Email é um dos campos mais validados em formulários web, mas a regex 'perfeita' para email é surpreendentemente complexa. Para uso prático, esta regex cobre 99% dos emails válidos: ^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$. Ela aceita domínios internacionais, subdomínios, e a maioria dos caracteres especiais permitidos na parte local. Para a maioria dos projetos, uma versão mais simples é suficiente: ^[^\s@]+@[^\s@]+\.[^\s@]{2,}$. Teste ambas no Testador de Regex da WikiPlus com exemplos de emails reais e inválidos para escolher a que melhor se adequa ao seu caso.
Regex para validação de URLs
URLs têm estrutura mais complexa que emails por suportarem múltiplos protocolos, parâmetros de query e fragmentos. Uma regex robusta para URL começa verificando o protocolo: ^(https?|ftp):\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)$. Para validar apenas domínios (sem protocolo obrigatório): ^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$. Para IPs v4: ^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}$. Em produção, para URLs críticas, considere usar a API URL do navegador ou biblioteca especializada além da validação por regex.
Regex para senhas seguras e requisitos de complexidade
Validar a força de senhas com regex é uma técnica comum em formulários de cadastro. Para exigir pelo menos: uma letra maiúscula, uma minúscula, um número e 8 caracteres no total: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$. Para adicionar exigência de caractere especial: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$. Esses padrões usam lookaheads positivos para verificar condições múltiplas. Cada (?=.*...) é um lookahead que verifica a presença do padrão em qualquer posição da string, sem consumir caracteres. Teste esses padrões com senhas válidas e inválidas no Testador de Regex para garantir que funcionam corretamente antes de implementar no formulário.
Regex para dados de cartão de crédito e dados financeiros
Importante: nunca processe ou armazene dados completos de cartão de crédito sem conformidade PCI-DSS. Dito isso, regex podem validar formato de números de cartão para feedback de UX imediato. Para Visa (começa com 4, 16 dígitos): ^4[0-9]{12}(?:[0-9]{3})?$. Para Mastercard: ^5[1-5][0-9]{14}$. Para data de validade no formato MM/AA: ^(0[1-9]|1[0-2])\/([0-9]{2})$. Para CVV (3 ou 4 dígitos): ^[0-9]{3,4}$. Sempre combine regex de formato com validação de algoritmo de Luhn para número de cartão em sistemas que precisam verificar validade antes de processar.
Perguntas frequentes
- Devo usar regex ou a API URL do navegador para validar URLs?
- Para validação rigorosa de URLs em JavaScript moderno, a API URL é mais confiável: try { new URL(string); return true; } catch { return false; }. Regex é útil para validações mais específicas (apenas https, sem query params, etc.) ou em ambientes sem acesso à API URL.
- Como validar que um campo contém apenas números inteiros positivos?
- Use a regex ^[1-9]\d*$ para inteiros positivos sem zero à esquerda, ou ^\d+$ para permitir qualquer sequência de dígitos incluindo zero. Para validar dentro de um range específico, é mais prático fazer a comparação numérica em código após a validação de formato com regex.
- Existe regex para validar JSON dentro do testador?
- Regex não é adequada para validar JSON completo, pois JSON é uma linguagem de contexto livre e regex só trata linguagens regulares. Para JSON simples sem aninhamento, regex pode checar o formato básico, mas para validação real de JSON use o Formatador JSON da WikiPlus, que analisa a estrutura completa.