[Expression régulière]Chaine de 9 chiffres
Résolu
Dinheru
Messages postés
1019
Date d'inscription
Statut
Membre
Dernière intervention
-
Dinheru Messages postés 1019 Date d'inscription Statut Membre Dernière intervention -
Dinheru Messages postés 1019 Date d'inscription Statut Membre Dernière intervention -
Bonjour
Voila je suis une bille en expression régulière et j'aimerais bien un peu d'aide ;p
Je voudrais vérifier qu'une chaine n'est composée que de 9 chiffres ni plus ni moins.
Exemple : 123456789
Est que quelqu'un aurait une idée de comment faire ?
Merci d'avance.
PS : j'ai trouver un petit site pratique pour tester les expressiosn régulières
http://www.annuaire-info.com/expression-reguliere.html
--
Mar-plij ur chopinad bier melen !!
Voila je suis une bille en expression régulière et j'aimerais bien un peu d'aide ;p
Je voudrais vérifier qu'une chaine n'est composée que de 9 chiffres ni plus ni moins.
Exemple : 123456789
Est que quelqu'un aurait une idée de comment faire ?
Merci d'avance.
PS : j'ai trouver un petit site pratique pour tester les expressiosn régulières
http://www.annuaire-info.com/expression-reguliere.html
--
Mar-plij ur chopinad bier melen !!
Configuration: Windows XP Firefox 2.0.0.4
6 réponses
-
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
'/([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 :-)) -
Voici:
^[0-9]{9}$
Ca fonctionne pour une chaine composée exclusivement de 9 chiffres et rien d'autre. -
Merci ça marche avec une petite correction :
^[0-9]{9,9}$
Et si je veux récupérer ça dans une chaine plus complexe du style :
Le nombre 123456789 possède 9 chiffres.
Comment faire pour ne récupérer que 123456789 ?
Merci d'avance. -
Avec preg_match :-)
$str = 'Le nombre 123456789 possède 9 chiffres.'; $matches = array(); if(preg_match ('/.*?([0-9]{9,9}).*?/', $str, $matches)){ echo 'Le nombre est '. $matches[1]; } else{ echo 'Pas de nombre trouvé'; }
J'ai pas testé mais ça doit être ça.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Merci pour ces compléments interessants :-)
-
Merci a vous deux pour vos réponses ça ma bien aidé !