Partage
  • Partager sur Facebook
  • Partager sur Twitter

Soucis de regex

Sujet résolu
    14 janvier 2019 à 14:40:25

    Bonjour !

    Je viens vers vous aujourd'hui car je rencontre une petite difficulté qui me bloque depuis pas mal de temps :

    afin d'automatiser une gestion de contrat digitalisé, j'utilise des variables maison dans une string HTML via un éditeur WYSIWYG dont la forme est "[[[NOM DE LA VARIABLE]]]". J'ai ensuite récupérer ces variables et je les ai transformer en champs texte pour que l'utilisateur puisse les remplir via un formulaire. 

    Mon soucis est que l'une de ces variable s'est foiré avec l'éditeur et donne ça lors de la récupération en JS : 

    '[[[blablabla</span><span style="background-color: rgb(255, 255, 255);">]]]',

    Du coup, lors de l'attribution des valeurs soumises par l'utilisateur, celle ci n'est pas prise en compte .. Ce que je comptais faire c'était faire une regex afin de remplacer le code html par un vide mais c'est la que je bloque, j'ai fais des testes ou je suis arrivé à ce stade la : 

    /\[\[\[(<[^>]+>)\]\]\]/gi

    mais je vous avoue que les regex et moi, ça fait 10 :D

    Est ce que quelqu'un saurais me débloquer ? Si besoin de plus de détail, il n'y a pas de soucis !

    Merci d'avance !

    -
    Edité par Lucatorze 15 janvier 2019 à 15:42:42

    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2019 à 10:15:07

      Bonjour, 

      Mon sujet est résolu grâce à une personne sur Stack Overflow, pour ceux que ça intéresse, voici ça réponse :

      You may match all substrings between [[[ and ]]] and then only replace substrings matching the <[^<>]+> pattern inside those matches:
      
      s = s.replace(/\[\[\[[\s\S]*?]]]/g, function (m) { 
          return m.replace(/<[^<>]+>/g, ''); 
      })
      The first pattern matches
      
      \[\[\[ - a [[[ substring
      [\s\S]*? - any 0+ chars, as few as possible
      ]]] - a ]]] substring.
      The g modifier finds multiple occurrences of the pattern inside the input string. The match is passed to the callback method (m is the matched text) and the .replace(/<[^<>]+>/g, '') is only applied to the m text that is returned after <, 1+ chars other than < and > and then > matches are replaced with an empty string.
      
      

      Voila :) 

      • Partager sur Facebook
      • Partager sur Twitter

      Soucis 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