Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pattern Regex pour transformer un lien

Du BBCODE au HTML en JavaScript

Sujet résolu
    14 décembre 2010 à 15:24:00

    Bonjour tout le monde,

    Je suis actuellement en train d'écrire une fonction javascript qui me permet d'obtenir une prévisualisation de mes news pendant l'écriture. Tout fonctionne parfaitement et j'ai utilisé les regex notamment pour transformer le BBCODE, que j'ajoute dans mon textarea, en balises HTML.

    Le seul problème vient de la transformation de mes liens. En PHP (pour la lecture) ça fonctionne niquel mais en JavaScript (pour la prévisualisation) le pattern que j'ai écrit me renvoie tout le texte contenu entre le 1er et le dernier lien (inclus). Cela donne quelque chose de ce genre lorsque je veux écrire deux liens séparés par un "et" :

    <a href="http://www.google.fr]Google[/URL]%20et%20[URL=http://www.msn.fr" target="_blank">MSN</a>
    


    Voilà la ligne qui effectue ce travail :

    var res = texte.replace(/\[URL=(.*)\](.*)\[\/URL\]/g, '<a href="$1" target="_blank">$2</a>');
    


    Lorsque j'ai un lien cela fonctionne, à partir de 2, ça ne va plus. J'ai essayé diverses interdictions dans le pattern avec des crochets mais sans succès.

    Merci d'avance pour vos réponses !
    • Partager sur Facebook
    • Partager sur Twitter
      14 décembre 2010 à 16:40:42

      Ajoute un ? derrière le quantifieur pour "simuler" le flag Ungreedy de PHP.

      /\[URL=(.*?)\](.*?)\[\/URL\]/g
      • Partager sur Facebook
      • Partager sur Twitter
        14 décembre 2010 à 16:43:47

        C'était bien ça ! Merci beaucoup !
        • Partager sur Facebook
        • Partager sur Twitter

        Pattern Regex pour transformer un lien

        × 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