[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
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
A voir également:
- Regex que des chiffres
- Comment activer les chiffres du clavier - Guide
- Comment garder le 0 devant les chiffres sur excel - Guide
- Identifiant pôle emploi 7 chiffres - Forum Services en ligne
- Identifiant 10 chiffres banque postale ✓ - Forum Réseaux sociaux
- Question sur les numéros identififiants demandeur d'emploi - Forum Réseaux sociaux
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
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 :-))
Voici:
Ca fonctionne pour une chaine composée exclusivement de 9 chiffres et rien d'autre.
^[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 :
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.
^[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 :-)
J'ai pas testé mais ça doit être ça.
$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