Validation d'email en Swift en 2025 : du simple au complexe

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Validation d'email en Swift : pourquoi c'est important et comment ne pas se tromper en 2025

\n

Bonjour, développeur ! Si tu as déjà écrit un formulaire d'inscription ou un écran de connexion sur iOS, tu as sûrement été confronté à la question : « Comment vérifier que l'utilisateur a saisi un vrai email, et non pas « qwerty@ » ? » La question est si populaire qu'elle a recueilli des milliers de vues sur Stack Overflow — et ce n'est pas pour rien. En 2025, alors que les utilisateurs attendent des applications une vitesse et une commodité maximales, une validation incorrecte peut entraîner une perte de clients.

\n

Dans cet article, nous allons analyser les meilleures pratiques de validation d'email en Swift. Tu apprendras comment ne pas réinventer la roue, pourquoi les expressions régulières ne sont pas toujours une panacée, et comment utiliser les fonctionnalités d'Apple pour que le code soit propre et fiable. C'est parti !

\n\n

Pourquoi la validation d'email est-elle un casse-tête ?

\n

On pourrait penser que c'est simple ? On prend une expression régulière, on vérifie le format — et voilà. Mais le diable se cache dans les détails. Les adresses email peuvent contenir des points, des signes plus, des caractères spéciaux et même des caractères non latins (domaines internationalisés). Si tu écris une vérification trop stricte, tu bloqueras des adresses légitimes. Si elle est trop faible, tu laisseras passer des déchets.

\n

En 2025, les normes RFC 5321 et RFC 5322 sont toujours d'actualité, mais en pratique, nous validons rarement un email à 100 % — il suffit généralement de détecter les erreurs évidentes (absence de @, espaces, domaine incorrect). La règle principale : la meilleure validation est l'envoi d'un email de confirmation. Cependant, lors de la saisie, nous voulons quand même donner un retour instantané à l'utilisateur.

\n\n

Méthode 1 : Expressions régulières (Regex) — le classique du genre

\n

La méthode la plus courante est d'utiliser une expression régulière. En Swift, cela se fait via NSRegularExpression ou les méthodes intégrées des chaînes. Regardons un exemple fonctionnel.

\n\n
import Foundation\n\nfunc isValidEmail(_ email: String) -> Bool {\n    // Expression régulière simple mais efficace\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// Exemple d'utilisation\nprint(isValidEmail("hello@pythonlib.ru"))   // true\nprint(isValidEmail("invalid-email"))       // false\n
\n\n

Avantages : rapide, clair, facile à maintenir.

\n

Inconvénients : ne prend pas en compte les domaines internationalisés (IDN) et certains caractères spéciaux légitimes. Pour 95 % des projets, cela suffit, mais si tu fais une application internationale — lis la suite.

\n\n

Regex amélioré pour 2025

\n

Si tu veux être un pas en avant, utilise une expression qui prend en charge les normes modernes :

\n\n
func isValidEmailStrict(_ email: String) -> Bool {\n    // Modèle plus strict selon RFC 5322 (simplifié)\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

Note : cette expression prend en charge les adresses IP entre crochets et les guillemets. Mais utilise-la avec prudence — elle peut être excessive pour des projets simples.

\n\n

Méthode 2 : NSDataDetector — validation par Apple

\n

Et sais-tu qu'iOS dispose d'un détecteur de données intégré ? Il sait reconnaître les emails, les liens, les téléphones et les dates. Et cela ne nécessite pas d'expressions régulières. Très utile

Blogs

Book Recommendations