Maison >développement back-end >Tutoriel Python >Regex est-il suffisant pour une validation précise des e-mails ?

Regex est-il suffisant pour une validation précise des e-mails ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-14 22:46:02682parcourir

Is Regex Enough for Accurate Email Validation?

Pièges des Regex dans la validation des e-mails

La validation des adresses e-mail à l'aide d'expressions régulières peut être une tâche délicate, en particulier pour les adresses sous-domaines. Pour relever ce défi, explorons les limites de s'appuyer uniquement sur les regex.

Limitations de la validation des regex

Lors de la validation de l'exactitude syntaxique d'une adresse e-mail (par exemple, la présence de @ et .), l'expression régulière ne tient pas compte des fautes de frappe et ne garantit pas que l'adresse existe réellement. La résolution de ces problèmes nécessite des vérifications plus approfondies, à savoir :

  1. Effacements typographiques : Même les adresses e-mail syntaxiquement valides peuvent être mal saisies. Une vérification manuelle est nécessaire pour exclure de telles erreurs.
  2. Vérification de l'existence : contacter le serveur SMTP via le package validate_email peut vérifier l'existence d'une adresse e-mail. Cependant, cette approche ne garantit pas que l'adresse appartient au destinataire prévu.

Vérification simple recommandée

Compte tenu des limites de la validation des regex, une vérification de base qui identifie les erreurs courantes des utilisateurs est souvent suffisant :

[^@]+@[^@]+\.[^@]+

Cette regex vérifie la présence d'exactement un symbole @ et d'au moins un . après le @.

Utilisation d'expressions régulières dans le code

Pour incorporer l'expression régulière ci-dessus dans le code, utilisez le module re en Python :

import re

if not re.match(r"[^@]+@[^@]+\.[^@]+", email):
    # Handle invalid email address

Notez l'utilisation du littéral de chaîne brute de Python préfixé par r pour éviter d'échapper deux fois les caractères. Pour les expressions régulières complexes, pensez à les compiler d'abord :

EMAIL_REGEX = re.compile(r"[^@]+@[^@]+\.[^@]+")

if not EMAIL_REGEX.match(email):
    # Handle invalid email address

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn