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 :

exp reguliere : 1 - LineLe : 2 - LineLe wins!!


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut exp reguliere : 1 - LineLe : 2 - LineLe wins!!
    Bonjour!

    J'ai quelques soucis avec mes expressions régulières

    voila, j'utilise une fonction d'aide à la saisie, basée sur les expressions régulières bien entendu.
    Seulement j'ai un souci avec les parenthèses (et probablement avec d'autres caractères, mais je ne suis pas encore tombée dessus)

    voila mon bout de code "pose-probleme" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	   	  val = val.replace(/[\(]/g,"\(");
    		  val = val.replace(/[\)]/g,"\)");
    		  rexp = "/^" + val + "/i" ; 
    		  rexp = eval(rexp) ;
    Si val = 'blabla.machin.truc.qqchose' : aucun probleme
    par contre si val = 'blabla.machin.truc.qqchose('
    Crac erreur au niveau de l'eval.

    Si quelqu'un sait pourquoi, je suis preneuse

  2. #2
    En attente de confirmation mail Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Points : 292
    Points
    292
    Par défaut
    J'avoue ne pas comprendre clairement ce que tu fais, simplement, dans ta derniere expression reguliere (celle de ton eval), avec ton truc, il reste des parentheses sans \.
    Ca va devenir rapidement degeux a lire, mais il faut ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            val = val.replace(/[\(]/g,"\\\("); 
            val = val.replace(/[\)]/g,"\\\)"); 
            rexp = "/^" + val + "/i" ; 
            rexp = eval(rexp) ;
    pour que ton dernier eval se portes bien... enfin, bien, a tester quand meme car comme je ne comprends pas ce que tu cherches a faire...

  3. #3
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut
    Merci!!
    avec les parentheses ça marche nickel. Enfin ça marche tant que j'ai pas d' * dans ma chaîne
    je me suis calquee sur le mme modele mais ça marche po.

    J'ai ptet mal expliqué ce que je fais, je rembobine et je recommence :

    Je realise une aide a la saisie. En fait mon utilisateur dispose d'une zone de saisie (un champ texte) et d'une liste de selection. Dans la liste de sélection ne sont proposées que les chaînes qui commencent par la meme sous chaine que celle tapée par l'utilisateur.
    J'ai donc une fonction qui est appelée onKeyUp et qui regénère le contenu de ma liste de sélection.

    voila la fonction en question :

    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
    31
    32
    33
    34
     
    function FichierSearch(val){ 
      raz(); //Remise à blanc de tout le formulaire formdefault
      //Si la chaîne saisie est vide, on ne fait rien et le formulaire reste vide
      if (val.length==0) 
    	 return ; 
     
      //On vérifie si le tableau javascript contenant les ressources existent (il n'existe pas 
      //si la table dbo.ressource est vide. 
      if (typeof(FichierSaisie) != 'undefined'){
       first = val.substr(0,1).toUpperCase() ; 
       //On vérifie qu'il existe une cellule dans le tableau d'indice correspondant au premier caractère saisi.
       if (typeof(FichierSaisie[first])!='undefined'){
     
    	   for &#40;i=0; i<FichierSaisie&#91;first&#93;.length; i++&#41;&#123; 
    		val = val.replace&#40;/&#91;\&#40;&#93;/g,"\\\&#40;"&#41;; 
            val = val.replace&#40;/&#91;\&#41;&#93;/g,"\\\&#41;"&#41;;
    		val = val.replace&#40;/&#91;\*&#93;/g,"\\\*"&#41;;
            rexp = "/^" + val + "/i" ; 
            rexp = eval&#40;rexp&#41; ; 
    		  LeLibelle = new String&#40;FichierSaisie&#91;first&#93;&#91;i&#93;&#91;1&#93;&#41;;
    		  LaCle = new String&#40;FichierSaisie&#91;first&#93;&#91;i&#93;&#91;0&#93;&#41;;
    		  //Si un &#40;ou plusieurs&#41; des enregistrements du tableau commencent par la même chaîne de caractères
    		  //que celle saisie, il sont rajoutés sous forme d'option dans la liste de sélection du formulaire. 
    		  if &#40;LeLibelle.search&#40;rexp&#41;!=-1&#41;&#123; 
    			 new_option = new Option&#40;LeLibelle,LaCle&#41;; 
    			 cptoption = document.forms&#91;"renseignements"&#93;.elements&#91;"fichierListe"&#93;.length ; 
    			 document.forms&#91;"renseignements"&#93;.elements&#91;"fichierListe"&#93;.options&#91;cptoption&#93;=new_option; 
     
    		&#125; 
    	  &#125;   
      &#125;
      &#125;
    &#125;
    et voila la tete d'un bout de mon tableau source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierSaisie&#91;"M"&#93; = new Array&#40;new Array&#40;"4", "MG0.OPCA.FI2.JOBLIB&#40;ESSA*&#41;"&#41;,new Array&#40;"1", "MG0.OPCA.FI2.JOBLIB&#40;ESSASDUM&#41;"&#41;&#41;;
    seulement voila :
    lorsque je n'ai pas l'entree "MG0.OPCA.FI2.JOBLIB(ESSA*)" dans mon tableau FichierSaisie tout fonctionne à merveille. Mais dès que je la rajoute, ça plante déjà quand l'utilisateur entre "MG0.OPCA.FI2.JOBLIB(" dans le champ de saisie.

    Je sais pas si c'est plus compréhensible ou si au contraire c'est encore plus mélangé....

  4. #4
    Membre actif Avatar de LineLe
    Inscrit en
    Septembre 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2003
    Messages : 285
    Points : 246
    Points
    246
    Par défaut
    bon ben finalement j'ai trouvé ma bêtise :

    il faut remplacer le tout ( parentheses et *) AVANT la boucle for... sinon il me le remplace a chaque fois, et donc rajoute des \...

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

Discussions similaires

  1. [RegEx] exp reguliere avec 00 - 34
    Par lousa005 dans le forum Langage
    Réponses: 2
    Dernier message: 20/01/2011, 10h56
  2. [Anniversaire] Joyeux anniversaire à LineLe
    Par Arnaud F. dans le forum La taverne du Club : Humour et divers
    Réponses: 73
    Dernier message: 15/11/2007, 18h11
  3. [exp reguliere]Bouton "tout cocher" pour tous les id commençant par 'bvt_'
    Par boniface dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/06/2007, 16h58
  4. Exp reguliere + fleches
    Par vodasan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/07/2006, 17h18

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