Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2011, 21h11   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
Par défaut regExp de format numérique à décimale unique

Bonsoir,

J'ai un léger soucis avec une expression, j'en avais jamais fait et je pense que je vais suicider le premier qui passe prêt de moi lol.

J'ai une premire expression :

Code :
chainePrix= new RegExp("^(([^0][0-9]*))(((.)[0-9]{2})+)$", "g");
Je ne peux pas écrire 0 devant le point et je suis limité a 2 décimal après la virgule,

J'ai ensuite cette seconde expression :
Code :
chainePoids= new RegExp("^(([^0][0-9]*|0){1})(((.)[0-9]{1})+)$", "g");
qui me permet de mettre 0 devant mais qui doit être limité à 1 décimal après la virgule, seulement je peux en mettre autant que je veux :/

Pourtant je ne devrais avoir qu'un seul chiffe à changer ?
mower666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 21h17   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Euh... ce que tu souhaites au final, c'est quoi ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 22h01   #3
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
^[1-9][0-9]*\.[0-9]{2}$
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 22h35   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Euh... ce serait pas plutôt
Code :
^[1-9]*[0-9]?\.[0-9]{2}$
si c'est bien un nombre quelconque avec 2 chiffres après la virgule et ne pouvant commencer par 0 que s'il est inférieur à 1 ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 00h04   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
En fait je souhaiterai que la regExp de la chaine du poids ne puisse comporter qu'un seul chiffre obligatoire après la virgule.
mower666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 00h42   #6
Membre éclairé
 
Avatar de kimjoa
 
Inscription : février 2009
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : février 2009
Messages : 318
Points : 360
Points : 360
Alors si j'ai bien compris , faut au moin 1 chiffres supèrieur à 1 et avec une décimale, et maxi 2 ?

Peut-être ca ...
Code :
1
2
 
^[1-9][0-9]*\.[0-9]{1,2}$
Sinon, si le chiffre peux être inférieur à 1

Code :
1
2
 
^(0|[1-9][0-9]*)\.[0-9]{1,2}$
ou sans décimale

Code :
1
2
 
^(0|[1-9][0-9]*)($|\.[0-9]{2})$
kimjoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 09h01   #7
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Citation:
Envoyé par kimjoa Voir le message
ou sans décimale
Code :
1
2
 
^(0|[1-9][0-9]*)($|\.[0-9]{2})$
Ouch !

Les deux autres sont bonnes (surtout la première en fait), mais mettre des "$" en milieu de chaîne c'est dangereux.

Sinon essaye ça :
Code :
/^(?:0|(?:-?[1-9][0-9]*(?:\.[0-9]{1,2})?))$/
Comme c'est (illisiblement) défini ça match :
  • 0
    ou
  • (-)nm (m étant un chiffre quelconque, potentiellement non renseigné, "-" pouvant être ou non renseigné)
    ou
  • (-)nm.x
    ou
  • (-)nm.xy

Franchement, c'est pourtant pas compliqué les regex !

PS :
Si tu veux un nombre non nul, non négatif et obligatoirement décimal alors la première expression de kimjoa convient parfaitement.
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 11h00   #8
Invité de passage
 
Inscription : janvier 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 9
Points : 1
Points : 1
Oh oui en effet le
Code :
^(0|[1-9][0-9]*)($|\.[0-9]{1})$
marche niquel Merci
mower666 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/02/2011, 12h37   #9
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
^[1-9]*[0-9]?\.[0-9]{1}$
me semble plus "direct" non ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 13h42   #10
Membre éclairé
 
Avatar de kimjoa
 
Inscription : février 2009
Messages : 318
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : février 2009
Messages : 318
Points : 360
Points : 360
Citation:
Les deux autres sont bonnes (surtout la première en fait), mais mettre des "$" en milieu de chaîne c'est dangereux.
Ha bon, je savais pas , c'est une question de mise en forme, ou de possible erreur de parcing?

Sinon j'ai corrigé !!
Code :
1
2
 
       ^-?(?:0|[1-9][0-9]*)(?:\.[0-9]{2})?$/;
kimjoa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 13h59   #11
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Citation:
Envoyé par kimjoa Voir le message
Citation:
Les deux autres sont bonnes (surtout la première en fait), mais mettre des "$" en milieu de chaîne c'est dangereux.
Ha bon, je savais pas , c'est une question de mise en forme, ou de possible erreur de parcing?
De parsing, parfois ça a un comportement inattendu (je sais pas bien pourquoi ).

Edit :
J'avais mal compris ta requête du début, je croyais que tu voulais que ton nombre ne puisse pas commencer par 0, alors qu'en fait tu voulais juste qu'il ne puisse pas y avoir de 0 devant un chiffre se trouvant avant la virgule (ex. : 01.23). Forcément la regex n'est pas la même.
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h33.


 
 
 
 
Partenaires

Hébergement Web