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 :

reaction incompréhensible expression régulière


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 112
    Par défaut reaction incompréhensible expression régulière
    salut,
    j'ai fait une fonction java script qui permet de tester un valeur d'un champs
    mon champs doit être composé de 1 ou plusieurs réels séparés par des espaces
    un réel c'est +ou- facultatif avec un nombre puis .nombre facultatif

    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
     
    function Verifchamp(chaine) 
    {
      var exp=new RegExp("[ ]+","g");
      var tabNom=chaine.split(exp);
      if (tabNom==null) {alert("Problème dans l'expression !");}
      else {
      	var affichage="Nombre de noms trouvés = " + tabNom.length + "\n";
        var exp1=new RegExp("^[+-]?[0-9][0-9]*([.][0-9][0-9]*)?$","g");
        for (var i=0;i<tabNom.length;i++)
        {
        affichage=affichage + " ["+ tabNom[i] + "]\n";   
        if ( exp1.test(tabNom[i]) ) {alert("Le nombre["+tabNom[i]+"] est valide :)"); }
        else {alert(" E R R E U R !\n\nLe nombre["+tabNom[i]+"] n'est pas valide !!!!"); }
        }
        alert(affichage);
      }
     
     
    }
    lorsque je teste un réel tout seul ça marche par contre si je met 3 consécutif le premier il l'accepte ,le deuxième non et le troisième oui il continue en alternance même que c'est le même réel

    par exemple pour faciliter si je met: 2 2 2 2
    le premier 2 est accepté,le deuxième non accepté, le troisième accepté et le quatrième non accepté
    je sais pas pour quoi
    merci pour votre aide

  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 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
    un classique pour developpez
    A priori une question de pointeur si ma mémoire est bonne ...
    il faut faire un test à vide ou recompiler l'expression régulière
    une recherche sur le forum te donneras de plus amples détails, je n'ai pas reussi à retrouver le lien, la recherche étant momentanément innaccessible pour moi
    bon j'ai néanmoins trouvé ça :
    http://www.developpez.net/forums/d49...e-exec-regexp/


    La méthode test(<chaîne>) (buggé sous I.E.)

    Cette méthode essaie d'opérer un appariement entre l'expression régulière référencée et la chaîne de caractères donnée en paramètre à partir de l'indice spécifié par la propriété lastIndex. Si un appariement est possible, lastIndex est réactualisé et la valeur booléenne renvoyée est true. Dans le cas contraire, la valeur renvoyée est false et lastIndex est remis à 0.
    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
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 112
    Par défaut
    merci pour votre réponse
    j'ai rectifié ça en décomposant ma fonction en deux voila mon code si quelqu'un est intéressé

    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
    30
     
     
    function v2(chaine)
    {
      var exp=new RegExp("^[+-]?[0-9][0-9]*([.][0-9][0-9]*)?$","g");
      if ( exp.test(chaine) ) {return 1; }
      else {return 2; }
     
     
    }
    function VerifLogin(chaine) 
    {
     
     
     
      var exp=new RegExp("[ ]+","g");
      var tabNom=chaine.split(exp);
      if (tabNom==null) {alert("Problème dans l'expression !");}
      else {
      	var affichage="Nombre de noms trouvés = " + tabNom.length + "\n";
        for (var i=0;i<tabNom.length;i++)
        {
        if(v2(tabNom[i])==1)alert("oui");else alert("non");
        affichage=affichage + " ["+ tabNom[i] + "]\n";   
        }
        alert(affichage);
      }
     
     
    }

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

Discussions similaires

  1. [RegEx] incompréhension d'une expression régulière
    Par salsabouge dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2010, 17h05
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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