我想在我的网站上将HTML-Code显示为文本。我在html中有以下示例文本:
<div id="test">
<p>Hello</p> <br />
<p>Hello2</p>
</div>
显示:
<p>Hello</p>
<p>Hello2</p>
在我的网站上。
现在我想更改标签的颜色。我在互联网上发现了一个想法,用一个包含在类的范围内的相同文本替换一个RegExp来改变该范围的样式。
我在JQuery中尝试过:
$(document).ready(function ()
{
var oldHtml = $("#test").html();
var newHtml = oldHtml.replace(new RegExp("(<){1}.*(>){1};","g"), "<span class='highlight'>$1</span>");
$("#test").html(newHtml);
});
得到以下内容:
<
<
我做错了什么?
答案 0 :(得分:1)
捕获组位于错误的位置。您正在将开始括号捕捉到$1
并将closei括号移至$2
,这是您从未使用过的。
(<){1}.*(>){1};
您也不需要量词。
<(.*?)>
使用这种模式和相同的替换它应该工作。 *?
量词使它不贪心,因此它会尽可能早地停止匹配。
请注意,使用正则表达式解析HTML是个坏主意。即使HTML的某些部分被转义,它仍然是一种不常规的硬语言。它最终无法发挥作用。请改用解析器。或者对于您的用例,只需使用许多易于查找和使用语法突出显示库之一。