Expression régulière [Résolu]

tabarrant 40 Messages postés lundi 21 novembre 2005Date d'inscription 27 octobre 2008 Dernière intervention - 20 août 2008 à 09:18 - Dernière réponse : tabarrant 40 Messages postés lundi 21 novembre 2005Date d'inscription 27 octobre 2008 Dernière intervention
- 28 août 2008 à 10:19
Bonjour,

Voila j'ai un petit souci concernant l'expression d'un expression régulière,
 j'aimerais tester si une string est bien un nombre donc j'ai utilisé l'expression ^[0-9]+$ mais il ne prenais pas les double en consideration alors je l'ai changer par ^[0-9]+.[0-9]{0,1,2}$ mais ca ne donne rien n'ont plus.

j'ai lu quelques petites notes sur le sujet mais ca m'a pas beaucoup aider malheureusement.
j'aimerais une expression qui valide un nombre autant un entier q'un double avec un point pour séparateur de décimale.
Donc qui me validerait 1236 ou 123.32 mais pas 12,12 et pas de o45.2.

Merci d'avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 20 août 2008 à 14:08
3
Merci
Salut,

Une mine d'informations pour les expressions régulières (pas toujours simples à écrire) : http://www.regular-expressions.info/
Dans la page sur le matchage des nombres, on retrouve les expressions suivantes, plus ou moins complexes en fonction de ce qu'on veut parser :
<tt class="regex">[-+]?[0-9]*\.?[0-9]*  => pour les nombres avec une virgule
</tt><tt class="regex">^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$  => pour les nombres avec une virgule et une partie en notation exponentielle optionnelle

Pour les entiers, la syntaxe est :
[-+]?[0-9]+

donc en combinant les deux on arrive à :

^[-+]?(</tt><tt class="regex">([0-9]+)|(</tt><tt class="regex">[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?</tt><tt class="regex">))$</tt>
<tt class="regex">|-----||-------|-----------------------------------||
 Signe  Entier (ou)           Double

</tt>

Merci cs_niky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de cs_niky
Meilleure réponse
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 27 août 2008 à 11:35
3
Merci
Est-ce que comme cela ça marche mieux ?

^([-+]?(<tt class="regex">([0-9]+)|(</tt><tt class="regex">[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?</tt><tt class="regex">))</tt><tt class="regex">)?</tt><tt class="regex">$</tt>

Merci cs_niky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de cs_niky
tabarrant 40 Messages postés lundi 21 novembre 2005Date d'inscription 27 octobre 2008 Dernière intervention - 22 août 2008 à 10:19
0
Merci
Merci pour l'expression ainsi que pour l'explication.
Commenter la réponse de tabarrant
tabarrant 40 Messages postés lundi 21 novembre 2005Date d'inscription 27 octobre 2008 Dernière intervention - 27 août 2008 à 10:41
0
Merci
Salut,

Voila j'ai encore une petite question concernant les expressions régulières.
En fait j'ai un TextBox et je peux soit rien ecrire dedans, soit un nombre; donc zero ou une occurence.

J'ai lu que pour faire ça, il y avait Les symboles quantificateurs. celui qui m'interessent est le ? (Indique 0 ou une occurence du caractère ou de la classe précedente)

Donc j'ai mis  (^[-+]?(<tt class="regex">([0-9]+)|(</tt><tt class="regex">[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?</tt><tt class="regex">))$)?  ==> mais ca n'as pas l'air de fonctionner!!</tt>

Merci d'avance
Commenter la réponse de tabarrant
tabarrant 40 Messages postés lundi 21 novembre 2005Date d'inscription 27 octobre 2008 Dernière intervention - 28 août 2008 à 10:19
0
Merci
Merci encore
Commenter la réponse de tabarrant

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.