Bonjour,
Toujours soucieux d'essayer de piger ces prises de tète d'expressions régulières,, j'essaye de valider une date toute simple (soyez gentils de pas rigoler de mon désespoir
)
Avec le code ci-dessus, j'essaye de valider avec un sous-masque conditionnel le mois qui doit se trouver en seconde position.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $subject = "2010-13-14"; $pattern = "#(?<année>(19|20)\d{2})-(?<mois>(0|1)(?(2)[1-9]|[0-2]))#"; if (preg_match_all($pattern, $subject, $matches)) { echo $matches['année'][0]."\n"; echo $matches['mois'][0]."\n"; }else{ echo 'raté'; }
Le code passe sans erreur mais le pattern valide les mois jusqu'à 19.
Pour moi, "(0|1)(?(2)[1-9]|[0-2])" veut dire que
- je cherche si le premier chiffre est un 0 ou un 1
- dans la condition, si c'est le premier choix qui est trouvé (donc 0) le masque à utiliser pour le suivant est un chiffre de 1 à 9
- sinon, c'est un chiffre de 0 à 2
Quelqu'un pourrait m'expliquer ce qui manque dans mon code svp, parce que je vais craquer?
Papy








, j'essaye de valider une date toute simple (soyez gentils de pas rigoler de mon désespoir
Répondre avec citation
Partager