2017-04-19 6 views
0

私のウェブサイトにHTMLコードをテキストとして表示したい。私はHTMLでサンプルテキストを次ています示したJQuery:Regex-matchesにスタイルを追加する

<div id="test"> 
    &lt;p&gt;Hello&lt;/p&gt; <br /> 
    &lt;p&gt;Hello2&lt;/p&gt; 
</div> 

:私のウェブサイト上の

<p>Hello</p> 
<p>Hello2</p> 

今、タグの色を変更したいと思います。私はインターネット上で、同じテキストをそのスパンのスタイルを変更するクラスでラップしたRegExpに置き換えるというアイデアを見つけました。

私はjQueryの中で、次の試してみました:

$(document).ready(function() 
{ 
    var oldHtml = $("#test").html(); 
    var newHtml = oldHtml.replace(new RegExp("(&lt;){1}.*(&gt){1};","g"), "<span class='highlight'>$1</span>"); 
    $("#test").html(newHtml); 
}); 

となった次:私が間違って何をやっている

< 
< 

+0

おそらく、あなたのコードを 'pre'またはそれに類するものに置き、構文強調表示のためのライブラリを使う方がよいでしょう。あなた自身をローリングすることは、多くの仕事になるでしょう。例えば、SOを見てください。 – simbabque

答えて

1

キャプチャグループの場所が間違っています。あなたはオープニングブラケットを$1に、クローズクローズブラケットを$2にキャプチャしています。これは決して使用しません。

(&lt;){1}.*(&gt){1}; 

また、数量詞を必要としません。

&lt;(.*?)&gt; 

このパターンと同じ置換で動作するはずです。 *?量指定子は貪欲ではないため、できるだけ早い段階で停止します。

正規表現でHTMLを解析することは悪い考えです。 HTMLの一部がエスケープされていても、まだ規則的ではないハード言語です。結局は動作しません。代わりにパーサを使用してください。あるいは、あなたのユースケースでは、構文強調表示ライブラリを簡単に見つけて使用するのが簡単です。

+0

私はこの携帯電話からwrot。パターンにはタイプミスが含まれている可能性があります。 – simbabque

+0

申し訳ありませんが、あなたの答えに感謝します。私は今、構文のハイライトライブラリを使用しています:) –

関連する問題