[Expression régulière]Chaine de 9 chiffres
Résolu/Fermé
Dinheru
Messages postés
1019
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
17 avril 2009
-
27 juin 2007 à 11:24
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 - 27 juin 2007 à 14:41
Dinheru Messages postés 1019 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 17 avril 2009 - 27 juin 2007 à 14:41
6 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 566
27 juin 2007 à 12:12
27 juin 2007 à 12:12
Salut,
$str = 'Le nombre 123456789 possède 9 chiffres.';
Ce n'est pas vraiment nécessaire
'/.*?([0-9]{9,9}).*?/'
Je n'ai pas encore étudié les regex en php.
Toutefois
doit être suffisante pour récupérer la 1ère occurence (vu qu'elle n'est pas ancrée)
donc le moteur va chercher une chiffre suit d'une chiffre suit d'une chiffre......9fois
si on a plusieurs (ce n'est pas son cas) alors il faut utiliser le modificateur /g de la regex (je ne sais pas s'il y a en PHP)
Il y a quand même une piège
si par exemple la chaîne contient
$str = 'Le nombre 123456789123456789 possède 18 chiffres.';
Ca sera peut être mieux d'utiliser un ancrage (mot, ou non chiffre)
Et le test ne sera pas fiable vu qu'il veut vérifier si la chaîne contient 9 chiffres ni plus ni moins
Je capture les 1ères 9 mais j'ai encore 9 qui reste
et ailleurs je ne comprends pas pourquoi ça ne marche pas
^[0-9]{9}$
{9} veut dire 9 occurences (kilian a raison)
c'est un peu rédondant {9,9}
il faut savoir exactement sur quelle chaîne tu traites la regex
En Perl j'aurais écrit
lami20j
P.S Je vais étudier les regex en PHP, c'est promis :-))
$str = 'Le nombre 123456789 possède 9 chiffres.';
Ce n'est pas vraiment nécessaire
'/.*?([0-9]{9,9}).*?/'
Je n'ai pas encore étudié les regex en php.
Toutefois
'/([0-9]{9,9})/'
doit être suffisante pour récupérer la 1ère occurence (vu qu'elle n'est pas ancrée)
donc le moteur va chercher une chiffre suit d'une chiffre suit d'une chiffre......9fois
si on a plusieurs (ce n'est pas son cas) alors il faut utiliser le modificateur /g de la regex (je ne sais pas s'il y a en PHP)
Il y a quand même une piège
si par exemple la chaîne contient
$str = 'Le nombre 123456789123456789 possède 18 chiffres.';
Ca sera peut être mieux d'utiliser un ancrage (mot, ou non chiffre)
Et le test ne sera pas fiable vu qu'il veut vérifier si la chaîne contient 9 chiffres ni plus ni moins
Je capture les 1ères 9 mais j'ai encore 9 qui reste
et ailleurs je ne comprends pas pourquoi ça ne marche pas
^[0-9]{9}$
{9} veut dire 9 occurences (kilian a raison)
c'est un peu rédondant {9,9}
il faut savoir exactement sur quelle chaîne tu traites la regex
En Perl j'aurais écrit
@occurence = $var =~ /\D\(d{9})\D/g;
scalar(@occurence) == 0? print "rien\n" :
scalar(@occurence) == 1? print "une occurence trouvée\n" :
print @occurence+0, " occurences trouvées\n";--
lami20j
P.S Je vais étudier les regex en PHP, c'est promis :-))