Validação de email em Swift em 2025: do simples ao complexo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Validação de email em Swift: por que é importante e como não errar em 2025

\n

Olá, desenvolvedor! Se você já escreveu um formulário de registro ou uma tela de login no iOS, certamente já enfrentou a tarefa: "Como verificar se o usuário digitou um email real, e não 'qwerty@'?" A pergunta é tão popular que no Stack Overflow acumulou milhares de visualizações — e não é à toa. Em 2025, quando os usuários esperam máxima velocidade e conveniência dos aplicativos, uma validação incorreta pode levar à perda de clientes.

\n

Neste artigo, vamos analisar as melhores práticas de validação de email em Swift. Você aprenderá como não reinventar a roda, por que expressões regulares nem sempre são a solução, e como usar os recursos da Apple para manter o código limpo e confiável. Vamos lá!

\n\n

Por que a validação de email é uma dor de cabeça?

\n

Parece simples, não? Pegue uma expressão regular, verifique o formato — e pronto. Mas o diabo está nos detalhes. Endereços de email podem conter pontos, sinais de mais, caracteres especiais e até caracteres não latinos (domínios internacionalizados). Se você criar uma validação muito rigorosa, bloqueará endereços legítimos. Se for muito fraca, deixará passar lixo.

\n

Em 2025, os padrões RFC 5321 e RFC 5322 ainda são relevantes, mas na prática raramente validamos email 100% — geralmente é suficiente capturar erros óbvios (falta de @, espaços, domínio inválido). A regra principal: a melhor validação é enviar um email de confirmação. No entanto, na etapa de entrada, ainda queremos dar ao usuário um feedback instantâneo.

\n\n

Método 1: Expressões Regulares (Regex) — o clássico

\n

A maneira mais comum é usar uma expressão regular. Em Swift, isso é feito com NSRegularExpression ou métodos internos de string. Vamos ver um exemplo funcional.

\n\n
import Foundation\n\nfunc isValidEmail(_ email: String) -> Bool {\n    // Expressão regular simples, mas eficaz\n    let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\\\.[A-Za-z]{2,64}"\n    let emailPredicate = NSPredicate(format: "SELF MATCHES %@", emailRegex)\n    return emailPredicate.evaluate(with: email)\n}\n\n// Exemplo de uso\nprint(isValidEmail("hello@pythonlib.ru"))   // true\nprint(isValidEmail("invalid-email"))       // false\n
\n\n

Vantagens: rápido, claro, fácil de manter.

\n

Desvantagens: não considera domínios internacionalizados (IDN) e alguns caracteres especiais legais. Para 95% dos projetos, isso é suficiente, mas se você está desenvolvendo um aplicativo internacional — continue lendo.

\n\n

Regex aprimorado para 2025

\n

Se quiser estar um passo à frente, use uma expressão que suporte os padrões modernos:

\n\n
func isValidEmailStrict(_ email: String) -> Bool {\n    // Padrão mais rigoroso baseado no RFC 5322 (simplificado)\n    let strictRegex = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\\"(?:[\\\\x01-\\\\x08\\\\x0b\\\\x0c\\\\x0e-\\\\x1f\\\\x21\\\\x23-\\\\x5b\\\\x5d-\\\\x7f]|\\\\\\\\[\\\\x01-\\\\x09\\\\x0b\\\\x0c\\\\x0e-\\\\x7f])*\\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\\\x01-\\\\x08\\\\x0b\\\\x0c\\\\x0e-\\\\x1f\\\\x21-\\\\x5a\\\\x53-\\\\x7f]|\\\\\\\\[\\\\x01-\\\\x09\\\\x0b\\\\x0c\\\\x0e-\\\\x7f])+)\\\\])"\n    return NSPredicate(format: "SELF MATCHES %@", strictRegex).evaluate(with: email.lowercased())\n}\n
\n\n

Observe: esta expressão suporta endereços IP entre colchetes e aspas. Mas use com cuidado — pode ser excessiva para projetos simples.

\n\n

Método 2: NSDataDetector — validação da Apple

\n

Sabia que o iOS tem um detector de dados embutido? Ele consegue reconhecer emails, links, telefones e datas. E isso não requer expressões regulares. Muito útil

Blogs

Book Recommendations