2016-12-31 4 views
0

私が構築しているウェブサイトのオンラインテキストエディタを作っています。マークアップにカスタムタグを使用しています。私が直面している問題は、HTMLにテキストを正規化するとき、私はを使用することができない、ということであるしかしカスタムタグのすべての存在をURLに置き換えてください[JS]

var imgOccurences = (informationText.match(/\[img/gi)).length; 

    for(var i = 0; i < imgOccurences; i++){ 
     var imgLocation = informationText.indexOf('[img'); 
     var endImgLocation = informationText.indexOf(']', imgLocation+1); 

     if(imgLocation != -1 && endImgLocation != -1){ 
     var informationTextTemp1 = informationText.slice(0, imgLocation); 
     var informationTextTemp2 = informationText.slice(endImgLocation+1, -1); 
     var informationTextTemp3 = informationText.slice(imgLocation, endImgLocation+1); 

     informationTextTemp3 = "<span class='highlightWord'>"+informationTextTemp3+"</span>"; 
     informationText = informationTextTemp1 + informationTextTemp3 + informationTextTemp2; 
     } 
    } 

:私は次の関数を使用して購入しない 読みやすくするために、マークアップは青で強調表示されているに、 regexの式は、画像タグを強調したいという事実とURLを含むそのすべての内容のために、[img]タグの他のタグで以前に使用していた式です。

私は[img]タグの '[img'部分のみを数え上げ、次に ']'を探して、それを通常のテキストから切り出して強調表示することにしましたスパンを使用して、それを通常のテキストに追加します。それをforループに入れます。 しかし、[img]タグの最初の出現のみが強調表示されており、これにどのように対処すべきかについて私は確信しています。どんな助けもありがとう。[img src='www.example.com/image.png']と、それは次のようになります:<span class='highlightWord'>[img src='example.com/image.png']</span>、その後のdivの.innerHTMLtextHighlightsと呼ばれるに入れて

は基本的に私は次のようになり、すべてを取得する必要があります。


期待される結果: 1

私が得た結果:.replace方法は、一致する文字列のパラメータとして正規表現を受け付けますので、2]

+0

spanあなたがたいでそれらをラップすることによってを)直接すべての一致を置き換えます、あなたがこれまで持っているものの実施例を示すように、関連するHTMLとCSSを入力してください。 –

+1

これを問題に限定してください... [mcve]として動作するすべての解析を見る必要はありません。サンプル入力と期待される結果を提供してください – charlietfl

+0

なぜホイールを再発明するのですか? highlight.js – mike510a

答えて

1

はあなたがはるかに簡単にそれを行うことができます。

informationText = informationText.replace(/(\[img.+?\])/gi, '<span class="highlightWord">$1</span>'); 

上記

+0

ありがとう!私はこの種のアプローチが.htaccessに当てはまると思っていましたが、一般的なXD – Fate

関連する問題