[RESOLU] Regex : plusieurs lettres + 1 chiffres facultatif

Eléphanteau du PHP | 42 Messages

12 mai 2014, 21:17

Bonjour

Je souhaiterai connaitre la regex pour avoir plusieurs lettres et un chiffre facultatif (0, un ou plusieurs) ?
Ca n'a pas l'air compliqué mais je bloque car les chiffres peuvent être placés n'importe où...

Merci
Fabien

wng
Eléphanteau du PHP | 25 Messages

12 mai 2014, 22:59

Voila pour toi :
$string = "s1fds0sdfds"; // faux
$string = "sdfsddf"; // ok
$string = "sdfd5sdf"; // ok
$string = "5sdfds"; // ok

if(preg_match("/^([a-z]{0,}[0-9]{0,1}[a-z]{0,})$/i", $string)) print "ok";
Je décompose la regex pour toi :

^ : indique le début de la phrase pour être plus restrictif
( ... ) : pour définir une chaine de caractère
[a-z]{0,} : indique que l'on cherche possiblement des lettre ( 0 ou plus )en début de la chaine de caractère
[0-9]{0,1} : indique que l'on cherche zéro ou un chiffre ( PS pas tester mais normalement [0-9]? fonctionne aussi )
[a-z]{0,} : on continue après la possibilité du chiffre ...
$ : et on indique la fin de ligne

Voila en espérant avoir répondue à ta demande :)

EDIT : La même chose si tu souhaite valider plusieurs chiffres :
"/^([a-z]{0,}[0-9]{0,1}[a-z]{0,})+$/i"
à savoir que si tu souhaite inclure les espaces il te faut :
"/^([a-z ]{0,}[0-9]{0,1}[a-z ]{0,})+$/i"

Eléphanteau du PHP | 42 Messages

13 mai 2014, 11:37

Merci réponse parfaite !