Partage
  • Partager sur Facebook
  • Partager sur Twitter

Javascript [RegExp]

Problème de guillemets

Sujet résolu
    22 août 2010 à 16:31:39

    Bonjour à tous :)

    Voilà, j'ai une chaine de caractères, par exemple :

    var text = '"texte1" texte2 "texte3"';
    


    J'affiche ce texte sur ma page, et je voudrais colorer en rouge les parties entre guillemets pour obtenir ce résultat :

    <span style="color: red;">"texte1"</span> texte2 <span style="color: red;">"texte3"</span>
    


    J'ai essayé via une RegExp :

    var text = '"texte1" texte2 "texte3"';
    text = text.replace(/"(.+)"/g, '<span style="color: red;">"$1"</span>', text);
    
    // OR
    
    text = text.replace(/"(.+)"{1}/g, '<span style="color: red;">"$1"</span>', text);
    


    Mais aucuns de ces essais ne marche. J'obtiens le résultat suivant :

    <span style="color: red;">"texte1" texte2 "texte3"</span>
    


    En fait, j'ai l'impression que la RegExp continue jusqu'à la dernière guillemet... :(

    Je n'arrive pas à trouver de solution, pourriez-vous m'éclairer ?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      22 août 2010 à 16:49:07

      Salut,

      Pour la RegExp tu ne mets pas de [] pour le . et \S\s serait mieux :

      /(\"[­\S\s]+\")/g
      


      \S\s c'est si c'est un whitespace ou pas donc tous les charactères, le point ne prend pas les whitespaces.
      • Partager sur Facebook
      • Partager sur Twitter
        22 août 2010 à 16:53:33

        Merci de ta réponse ^^

        Cependant, lorsque je mets ceci :

        text = text.replace(/(\"[­\S\s]+\")/g, '<span style="color: red;">"$1"</span>', text);
        


        J'obtiens le même résultat qu'avant :

        <span style="color: red;">"texte1" texte2 "texte3"</span>
        


        Alors que je ne veux que "texte1" et "texte3" colorés. :)
        • Partager sur Facebook
        • Partager sur Twitter
          22 août 2010 à 19:25:21

          Moi ça fonctionne :

          var Text = "Text1 \"Text2\" Text3";
          
          document.write( Text.replace( /(\"[­\S\s]+\")/g, "<span style=\"color:red;\">$1</span>" ) );
          
          • Partager sur Facebook
          • Partager sur Twitter
            23 août 2010 à 0:29:44

            var text = '"texte1" texte2 "texte3"';
            
            text.replace(/"([\s\S]*?)"/g, '<span style="color: red;">"$1"</span>');
            


            Le *? permet de faire une regexp ungreedy.
            • Partager sur Facebook
            • Partager sur Twitter
              23 août 2010 à 9:14:13

              Merci, ça marche parfaitement. :D
              • Partager sur Facebook
              • Partager sur Twitter

              Javascript [RegExp]

              × 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