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

JavaScript Discussion :

A la recherche de la bonne expression régulière


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut A la recherche de la bonne expression régulière
    Bonjour,

    Au secours , j'ai quelques difficultés à écrire une expression régulière qui permettrait de contrôler la chaine suivante :

    1) contient 2 valeurs numériques négatives ou non, décimal ou non
    2) chaque valeur numérique doit-être séparée par un ;

    Exemples :

    -500;-1000
    -500;1000
    500;-1000
    500;1000

    J'ai écrit ceci :

    var reg = /^(-)?[0-9;]*(-)?[\.]?[0-9;]*(-)?$/

    mais ça ne fonctionne pas totalement. En effet il est encore possible de rentrer un signe - à n'importe quel endroit comme par exemple :

    500-;-1000

    ou

    -500-;-100-

    etc, etc


    Un expert pourrait-il m'aider ?

    Merci d'avance

    Cordialement

  2. #2
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Salut,

    J'ai pas tout compris à ton expression, mais celle-ci à l'air de fonctionner d'après mes tests :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^(-?\d+\.?\d*);(-?\d+\.?\d*)$/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    Bonjour,

    Avant tout merci pour ton aide ;-)

    Il semble qu'il y a un problème avec l'expression que tu m'as communiqué. Lorsque j'essaie de rentrer le signe - en tout premier caractère le test (reg.exec(machaine)) me renvoie une chaine non valide !?

    Pas étonnant que tu as du mal à comprendre mon expression car ni connaissant pas grand chose là dedans, j'y vais par tatonnement et surtout au pif.. et pour l'instant sans grand résultat...

  4. #4
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    SpaceFrog n'y a-t-il pas un + en trop dans ton expression?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(\.[0-9]+)?;-?[0-9]+(\.[0-9]+)?$
    J'aime bien la "factorisation".

  5. #5
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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 !

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    celle que j'ai donné fonctionne pour des integers ...
    ton séparateur decimal c'est . ou , ?

    si c'est le point :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(\.[0-9]+)?;-?[0-9]+(\.[0-9]+)?+$
    si c'est la virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(,[0-9]+)?;-?[0-9]+(,[0-9]+)?+$
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    celle que j'ai donné fonctionne pour des integers ...
    ton séparateur decimal c'est . ou , ?

    si c'est le point :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(\.[0-9]+)?;-?[0-9]+(\.[0-9]+)?+$
    si c'est la virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(,[0-9]+)?;-?[0-9]+(,[0-9]+)?+$
    OK, en fait pour savoir si le séparateur est un point ou une virgule le traitement est fait en .asp (insertion vbscript dans le code Javascript) d'après certains paramètres. Avec l'exemple que tu fournis cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(\<%=MonSeparateur%> [0-9]+)?;-?[0-9]+(\<%=MonSeparateur%>[0-9]+)?+$
    Bon je vais essayer tes expressions pour les 2 cas tout de suite et je te donne une réponse. Je reste en ligne ;-)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    Pour l'expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(,[0-9]+)?;-?[0-9]+(,[0-9]+)?+$
    J'ai une erreur : Quantificateur inattendu

    idem pour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(\.[0-9]+)?;-?[0-9]+(\.[0-9]+)?+$
    Aurais-je oublié quelque chose !?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 110
    Par défaut
    J'ai également essayé ceci (le + en moins)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^-?[0-9]+(\.[0-9]+)?;-?[0-9]+(\.[0-9]+)?$
    Meme problème qu'au départ ! Le test ne passe pas

    Extrait du code source :

    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
     
    ...
    var param = doc.Parametre[index].value;
     
    <%if session("MASK_SEPAR_DEC")="." then%> 
    var reg = /^-?[0-9]+(\.[0-9]+)?;-?[0-9]+(\.[0-9]+)?$/
    <%else %>
    var reg = /^-?[0-9]+(,[0-9]+)?;-?[0-9]+(,[0-9]+)?$/
    <%end if %>
     
    //Erreur si chaine non conforme
    if(reg.exec(param)==null)
    {
     ..
    }
    Est-ce que vous y voyez plus clair avec ceci ?
    J'ai également oublié de préciser que la chaine est testée en temps réel via les entrées effectuées dans un champ text et l'utilisation de la fonction onkeyup du control.

    Cordialement

Discussions similaires

  1. Trouver la bonne expression régulière
    Par Marvelll dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 09/04/2010, 08h13
  2. Recherche de string avec expression régulière ?
    Par sbadecoder dans le forum Langage
    Réponses: 0
    Dernier message: 21/01/2008, 19h44
  3. Réponses: 5
    Dernier message: 30/10/2006, 13h59
  4. Expression régulière, laquelle est la bonne ?
    Par JackBeauregard dans le forum Langage
    Réponses: 2
    Dernier message: 06/07/2006, 18h20
  5. Recherche une expression régulière
    Par matt1212 dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 23/03/2006, 00h25

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