OVH Cloud OVH Cloud

Pb avec expressions régulières

3 réponses
Avatar
Stéphane ANDRE
J'essaye de d=E9finir tr=E8s simplement une expression=20
r=E9guli=E8re qui me permet de v=E9rifier que la chaine pass=E9e=20
en param=E8tre ne contient que des chiffres. Voici ma=20
m=E9thode :

static public bool isChaineNumerique(string sPar_Chaine)
{
System.Text.RegularExpressions.Regex oLocal_Regex;
bool bLocal_ValeurRetour =3D false;
oLocal_Regex =3D new Regex(@"[0-9]");
if (oLocal_Regex.IsMatch(sPar_Chaine)=3D=3Dtrue)
{
bLocal_ValeurRetour =3D true;
}

return bLocal_ValeurRetour;
}

Or cela ne marche pas.=20
Si je saisi "12ab" cette m=E9thode me retourne true.

D'ou vient l'erreur ?

Merci d'avance.

3 réponses

Avatar
Ambassadeur Kosh
comme le disait Patrick, l'erreur est le pattern lui meme
utiliser ^d*$, et non d

regulator est un outils qui va vous permettre d'experimenter autours des
regex.
http://regex.osherove.com/

ça va vous donner des ailes...
et pour l'utilisation de la class Regex, on est la.
Avatar
adebaene
Stéphane ANDRE a écrit :

J'essaye de définir très simplement une expression
régulière qui me permet de vérifier que la chaine passée
en paramètre ne contient que des chiffres. Voici ma
méthode :

static public bool isChaineNumerique(string sPar_Chaine)
{
System.Text.RegularExpressions.Regex oLocal_Regex;
bool bLocal_ValeurRetour = false;
oLocal_Regex = new Regex(@"[0-9]");
if (oLocal_Regex.IsMatch(sPar_Chaine)==true)
{
bLocal_ValeurRetour = true;
}

return bLocal_ValeurRetour;
}

Or cela ne marche pas.
Si je saisi "12ab" cette méthode me retourne true.

D'ou vient l'erreur ?



Ta regex teste si la chaine contient au moins 1 caractère numérique.
Pour tester qu'elle ne contient que çà, utilises :

@"^d*$"


^ correspond au début de la chaine, $ à la fin de la chaine.
d est équivalent à [0-9]
* spécifie "de 0 à N fois". Tu peux vouloir le remplacer par + ("de 1
à N fois") pour éviter de matcher les chaines vides.

Arnaud
MVP - VC
Avatar
Stéphane ANDRE
Merci beaucoup à vous 2 !

-----Message d'origine-----
comme le disait Patrick, l'erreur est le pattern lui meme
utiliser ^d*$, et non d

regulator est un outils qui va vous permettre


d'experimenter autours des
regex.
http://regex.osherove.com/

ça va vous donner des ailes...
et pour l'utilisation de la class Regex, on est la.


.