IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Expression régulière d'un chiffre soit entier ou décimal.


Sujet :

jQuery

  1. #1
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut Expression régulière d'un chiffre soit entier ou décimal.
    bonjour,

    j'essaie de créer une expression régulière pour un chiffre comme : 154 ou 22 ou -0,14 ou 0,15 ou 1,12 ou 22,22 ou 222,22

    Code javacript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    $("#txtTitreModif,#txtdevmod,#txtOrdreCatmod").on("keypress", function (e) {
                var id = $(this).attr("id");
                var char= String.fromCharCode(e.which), numeric = 0, retour = false;
                var regEntierOrVirgule = new RegExp("^(-|)[0-9]+((.|,)[0-9]+|)$");
                var regTitre = new RegExp("^([a-zA-Z0-9 ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]|\p{IsArabic})+$");
                switch (id) {
                    case ("txtTitreModif"):
                        if (regTitre.test(char)) retour = true;
                        break;
                    case ("txtdevmod"):
                        if (regEntierOrVirgule.test(char)) retour = true;
                        break;
                    case ("txtOrdreCatmod"):
                        if (regEntierOrVirgule.test(char)) retour = true;
                        break;
                } //fin switch
                return retour;
     
            });

    le (-) ne passe pas ni les (,.) pourtant je les ai autorisés dans le RegExp regEntierOrVirgule, vous avez une idée?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Bonjour SpaceFrog,

    ça n'a pas fonctionné, toujours pas de virgule.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    rien que des true ...

    http://fiddle.jshell.net/23ogtaLL/1/

    Quel est ton souci ?
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    ton exemple fonctionne parfaitement sur fiddle, pourtant moi je pense que le problème se situe ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var char = String.fromCharCode(e.which)
    .
    j'ai fais une alerte qui m'affiche la variable "char" au moment de KeyPress, et c'est bien une virgule, pourtant ça passe pas dans le RegExp.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    ha sur le keyup

    normal mon expression ne valide pas un chiffre se terminant par une virgule ...

    10, => false ....
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  7. #7
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    le keyup ne fonctionne pas, tout les caractères sont acceptés y compris (&é"'((-è$)... enfin bref, ça capte rien.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    En une ligne sur le keyup pour le numérique...
    http://fiddle.jshell.net/usskxrvk/
    Ma page Developpez - Mon Blog 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

    Venez sur le Chat de Développez !

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Merci SpaceFrog,
    j'ai gardé le keypress et j'ai utilisé indexOf(), et substring(), ça fonctionne parfait avec le keypress.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     $("#txtTitreModif,#txtdevmod,#txtOrdreCatmod").on("keypress", function (e) {
                var id = $(this).attr("id");
                var Lechar = String.fromCharCode(e.which), //getLechar en string
                valeur = $(this).val().trim(), retour = false,
                IndexOfVirgule = parseInt(valeur.indexOf(","));//get indexOf virgule
                var selectedText = getSelectedText(); // si le texte est selectionné
                var regEntierOrVirgule = new RegExp("^[0-9,]+$");
                var regTitre = new RegExp("^([a-zA-Z0-9 ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]|\p{IsArabic})+$");
                switch (id) {
                    case ("txtTitreModif"):
                        if (regTitre.test(Lechar)) retour = true;
                        break;
                    case ("txtdevmod"):
                        if (regEntierOrVirgule.test(Lechar)) 
                        {
                            retour = ((valeur != "" && IndexOfVirgule < 0 && !selectedText) //interdit si le champ n'est pas vide et qu'on sélectionne le texte avec Ctrl+A puis virgule .
                                        || (IndexOfVirgule > 0 && Lechar != ",")//interdiction d'écrire une virgule si elle existe déjà dans la chaîne.
                                        || (valeur == "" && Lechar != ",") // interdiction d'écrire une virgule comme 1er caractère si le champ est vide.
                                        || (valeur != "" && Lechar != ","));//interdiction d'écrire le virgule.
                         } //fin if regEntier...
                        break;
                    case ("txtOrdreCatmod"):
                        if (regEntierOrVirgule.test(Lechar)) retour = true;
                        break;
                } //fin switch
                return retour;
     
            });
    ça doit être la même chose pour la zone de texte "#txtOrdreCatMod".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Expression régulière sur les chiffres
    Par cybercandyman dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 24/02/2012, 18h48
  2. java.util.regex Class Pattern: expression régulières chiffres romains
    Par bipbipman2003 dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 10/06/2011, 15h24
  3. Expression régulière "est un entier"
    Par salma309 dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2011, 12h14
  4. Réponses: 1
    Dernier message: 09/05/2010, 22h53
  5. Expression régulière chiffres et virgules
    Par johweb dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/06/2008, 21h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo