Page 1 sur 1

Regex email

Posté : 14 juin 2021, 14:08
par hikaru59
Bonjour,
J'ai un problème avec un Regex de validation email :

Code : Tout sélectionner

// $email = "[email protected]"; // Ok $email = "[email protected]"; // Ne doit pas marcher if (preg_match("`^[a-z0-9._-]+@[a-z0-9._-]{2,}\.{1}[a-z]{2,4}$`i", $email)) { echo 'Email ok'; }
Quand je mets plusieurs points devant l'extension : [email protected], ça passe. Ce qui n'est pas normal.
Je sais qu'on peut faire avec FILTER_VALIDATE_EMAIL sans Regex, mais j'utilise le Regex pour apprendre.

Re: Regex email

Posté : 14 juin 2021, 16:11
par kevin254kl
Salut,

Pour le coup les regex sont assez gourmandes même pour s'entrainer c'est prendre de mauvaise habitudes.
Sinon avec ça de mon côté ça fonctionne

Code : Tout sélectionner

^[a-z0-9._-]+@[a-z0-9_-]{2,}\.{1}[a-z]{2,4}$
J'ai enlevé le . dans [a-z0-9_-] car tu autorisé ça valeur plusieurs fois

Re: Regex email

Posté : 14 juin 2021, 17:16
par hikaru59
Merci ça marche.

Re: Regex email

Posté : 15 juin 2021, 10:13
par @rthur
L'intérêt d'utiliser FILTER_VALIDATE_EMAIL c'est que ça permet d'être sûr de ne pas oublier de cas particuliers.

Par exemple dans ta regex, tu n'autorises que les extensions (.com, .fr, .info, etc...) de 2 à 4 caractères, or il n'y a pas de raison de limiter à 4.
Voici toutes les extensions possibles, tu verras qu'il y en a beaucoup qui ont + de 4 caractères :
https://data.iana.org/TLD/tlds-alpha-by-domain.txt

Autre exemple, on a le droit d'avoir le caractère "+" dans son mail or toi tu l'interdis.

Et ce ne sont que 2 exemples, mais il y a de façon certaine d'autres cas possible :D
Mais pour s'exercer aux regex, c'est un bon exercice c'est vrai ^^