Expression régulière dans la balise HTML pattern

Fermé
Southstyle Messages postés 46 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 26 mars 2021 - 3 déc. 2016 à 08:23
NHenry Messages postés 15164 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 novembre 2024 - 3 déc. 2016 à 17:46
Bonjour,

Soit des utilisateurs remplissant un formulaire avec un champ contenant leur e-mail.
Le pattern vérifie que l'e-mail corresponde bien à une adresse valide, mais j'aimerais en plus que le champ ne contienne pas des erreurs classiques. A savoir :
"bluwin" au lieu de bluewin
hotmai au lieu de hotmail
educanet.ch au lieu de educanet2.ch
(NB : beaucoup d'autres erreurs arrivent également, mais contre cela on ne peut rien faire).

Actuellement :
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$"


Pourriez-vous m'indiquer l'expression régulière pouvant vérifier que l'e-mail soit valable, tout en ne contenant pas bluwin, hotmai (mais hotmail doit être autorisé) et educanet2 au lieu de educanet.

Merci pour votre précieuse aide !

Raph
A voir également:

1 réponse

NHenry Messages postés 15164 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 novembre 2024 345
3 déc. 2016 à 11:51
Tu peux vérifier si le domaine a bien un enregistrement MX (Mail eXchange) :
https://www.php.net/manual/en/function.getmxrr.php

Si ce n'est pas le cas, c'est que l'email n'est pas bon.
0
Southstyle Messages postés 46 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 26 mars 2021
3 déc. 2016 à 13:47
Hello,

Merci pour ta réponse rapide.

Je ne connaissais pas du tout getmxrr(). Ca aurait pu être une solution, mais je préfère exécuter le script côté client et rendre le formulaire réactif. Si getmxrr() savait vérifier le mail de l'utilisateur (exemple il met nom_prenom@... au lieu de nom.prenom@...) alors je serais preneur. J'aimerais donc conserver mon idée en expression régulière mais je garde au chaud getmxrr() :-)

Merci !

Raph
0
NHenry Messages postés 15164 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 novembre 2024 345
3 déc. 2016 à 17:46
Avec une expression régulière tu te limite aux erreurs que tu connais, et pas à toutes les erreurs.
par exemple, même si tu gère la faute sur hotmail, il faudra aussi gérer les :
@aposte.net : @laposte.net
@glail.com : @gmail.com
...

Il est possible d’interroger une URL avec JS et donc de passer en paramètre l'adresse mail à tester pour que PHP fasse le test (cela n'empêche pas de faire le test quand même après la validation sur la page destinatrice du formulaire, le code HTML pouvant facilement modifié côté client.

De plus, il existe aucune méthode pour contrôler la validité de ce qu’il y a avant le @, entre nom.prenom ou nom-prenom, les 2 sont syntaxoqiement valide, seul l'interrogation directe du serveur mail te permettra de savoir si l'adresse existe ou pas.
.
0