Rechercher : dans
Par :

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

Dernière réponse le 27 jun 2007 à 14:41:44 Dinheru, le 27 jun 2007 à 11:24:15 
 Signaler ce message aux modérateurs

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 !!

Configuration: Windows XP
Firefox 2.0.0.4

Meilleures réponses pour « [Expression régulière]Chaine de 9 chiffres » dans :
Sed - Trucs et astuces VoirSubstitution Affichage Suppression Espace et tabulation Ligne vide Intervalle régulier Divers Joindre des lignes Affichage insensible à la casse Substitution Substituer "foo" par "bar" à chaque ligne Seulement la 1ère...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
Javascript - L'objet RegExp VoirLes particularités de l'objet RegExp L'objet RegExp est un objet permettant de manipuler des expressions régulières, c'est-à-dire des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, afin de trouver des...

1

kilian, le 27 jun 2007 à 11:27:35

Voici:

^[0-9]{9}$ 

Ca fonctionne pour une chaine composée exclusivement de 9 chiffres et rien d'autre.
..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

2

Dinheru, le 27 jun 2007 à 11:44:18

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. Mar-plij ur chopinad bier melen !!

Répondre à Dinheru

3

kilian, le 27 jun 2007 à 11:50:21
  • +1

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.
..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

4

lami20j, le 27 jun 2007 à 12:12:25
  • +2

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 :-))

Répondre à lami20j

5

kilian, le 27 jun 2007 à 14:28:39

Merci pour ces compléments interessants :-)

..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...

Répondre à kilian

6

 Dinheru, le 27 jun 2007 à 14:41:44

Merci a vous deux pour vos réponses ça ma bien aidé ! Mar-plij ur chopinad bier melen !!

Répondre à Dinheru
Collection CommentÇaMarche.net