Création
d'entreprise
Posez votre question Signaler

[Expression régulière]Chaine de 9 chiffres [Résolu]

Dinheru 1019Messages postés 20 avril 2005Date d'inscription - Dernière réponse le 27 juin 2007 à 14:41
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
Lire la suite 

[Expression régulière]Chaine de 9 chiffres »

6 réponses
Réponse
+2
moins plus
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 :-))
Ajouter un commentaire
Réponse
+0
moins plus
Voici:
^[0-9]{9}$ 

Ca fonctionne pour une chaine composée exclusivement de 9 chiffres et rien d'autre.
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour ces compléments interessants :-)
Ajouter un commentaire
Réponse
+0
moins plus
Merci a vous deux pour vos réponses ça ma bien aidé !
Ajouter un commentaire
Ce document intitulé « [Expression régulière]Chaine de 9 chiffres » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?