[RESOLU] Imposer un format de saisie

Eléphanteau du PHP | 40 Messages

13 août 2019, 14:58

Bonjour,

je cherche le format du genre :
elseif (!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*.([a-z]{2,4})$`',$email)) 
pour imposer un bon format de mail à renseigner.

J'aimerai faire la même chose mais pour 4 caractères de saisie :
1ère lettre alphabet majuscule
2ème : un chiffre
3ème : un chiffre
4ème : un chiffre

de sorte que si l'utilisateur saisie : CB02
erreur de format

Pouvez-vous m'aider ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8367 Messages

13 août 2019, 15:11

Bonjour,

Voici une plateforme très pratique pour construire et tester ses expressions régulières :
https://regex101.com

Pour représenter un caractère de l'alphabet majuscule, c'est [A-Z]
Pour les chiffres, c'est [0-9]

A toi de jouer ! :-D
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8367 Messages

13 août 2019, 15:36

A noter que ta regex pour vérifier que c'est bien un email est incomplète et fausse car il lui manque pas mal de cas :
- un "\" avant le point de l'extension pour bien indiquer que c'est un point et non pas la représentation de n'importe quel caractère
- la gestion des extensions de + de 4 caractères (.alsace, .amazon, .boutique, .bnpparibas... c'est en train de largement se développer depuis plusieurs mois)
- la gestion des noms de domaines accentués
- le caractère "+" qui est autorisé dans la 1ère partie d'une adresse email
Et je ne suis pas expert donc il y a probablement encore beaucoup d'autres cas manquant.

La bonne pratique pour vérifier qu'une adresse e-mail est correctement formée est d'utiliser une fonction PHP qui fait ça tout seul!
- filter_var https://php.net/filter_var
- avec le flag FILTER_VALIDATE_EMAIL : https://www.php.net/manual/fr/filter.fi ... lidate.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 40 Messages

19 août 2019, 11:39

Merci Beaucoup !
ca m'à aidé à résoudre.