Bonjour,
Aujourd'hui on m'a posé une bonne question sur comment utiliser le preg_match correctement pour valider un nom sur un site web (username).
Moi j'aimerai faire un code qui détecte si la chaine contient :
- Au moins 3 caractères
- Suivis de
- caractères de a à z (insensible à la casse)
OU
- des nombres de de 1 à 9
Ça m'a pas l'air bien compliqué mais pourtant... ça fonctionne pas.
Voici le code ci dessous.
Ça ne devrait pas fonctionner et pourtant... ça fonctionne... il renvoie 1 comme si c'était bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?php $var = preg_match("(...([a-z]|[1-9])*)","----"); if($var>0) echo("ok trouvé"); else echo("pas trouvé"); echo("<br>$var"); ?>
On dirait que c'est bon il vérifie si il y a trois caractères, mais ensuite tous les autres caractères passent.
Je ne comprends pas
Et puis j'avais testé : quelle est la différence entre :
([a-z]) et [a-z] ?
Moi je n'en voit aucune, pourtant l'un renvoie 1 et l'autre 0 malgré la même chaine passée en paramètre! Les () sont nécessaires pour l'évaluation avec preg_replace ?
Quelqu'un pourrait m'aider?
Partager