Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème de regex

Sujet résolu
    31 juillet 2009 à 19:20:33

    Bonjour tout le monde...
    Bon j'en ai marre, pourquoi ça marche pas ! :colere2:
    J'ai une regex qui est censé enlever tous les espaces compris entre des accolades, la voici :
    str = str.replace(/(\{.+)\s(.+\})/g, '$1$2');
    

    Mais ça ne marche pas, ça ne retire que le dernier espace o_O
    Comment cela se fait-il ?
    Merci d'avance :)
    PS : si str vaut "{test - test}",
    ça doit retourner : "{test-test}"
    mais ça retourne : "{test -test}"
    :'(
    • Partager sur Facebook
    • Partager sur Twitter
      31 juillet 2009 à 20:49:36

      . inclus les espaces en mode gourmant (par défaut), la regex en prend un maximum donc :
              
      str = str.replace(/(\{[^\s]+)\s([^\s]\})/g, '$1$2');
      • Partager sur Facebook
      • Partager sur Twitter
        31 juillet 2009 à 22:41:41

        Désolé mais ça ne marche pas :(
        Cette fois il ne supprime même plus le dernier espace :-°
        Je pense que ça vient d'un autre soucis, je vais essayer de trouver d'où ça vient
        mais si quelqu'un a la solution...
        ^^
        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          1 août 2009 à 3:17:52

          var reg = /(\{.+)\s(.+\})/g;
          while(str.match(reg)) {
            str = str.replace(reg,"$1$2");
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            1 août 2009 à 10:34:08

            Merci, ça marche :D
            par contre je ne vois pas l'intérêt du coup de mettre le paramètre global à la regex puisqu'on fait une boucle :-°
            Je l'ai donc enlevé et ça marche également...
            • Partager sur Facebook
            • Partager sur Twitter
              1 août 2009 à 11:13:06

              Bah le global permet d'aller plus vite si tu as plusieurs accolades, je pense.

              D'ailleurs, tu pourrais peut-être aussi ajouter un * après le \s pour supprimer d'un coup plusieurs espaces. ;)
              • Partager sur Facebook
              • Partager sur Twitter

              problème de regex

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown