JQuery:将样式添加到正则表达式匹配项

JQuery:将样式添加到正则表达式匹配项,jquery,regex,replace,highlight,Jquery,Regex,Replace,Highlight,我想在我的网站上以文本形式显示HTML代码。我的html中有以下示例文本: <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> 在我的网站上 现在我想更

我想在我的网站上以文本形式显示HTML代码。我的html中有以下示例文本:

<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,将相同的文本包装在一个span中,以改变该span的样式

我在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);
});
并得到以下结果:

< 
< 

我做错了什么

捕获组位于错误的位置。您将开始括号捕获到$1中,将closi结束括号捕获到$2中,这是您从未使用过的

你也不需要量词

&lt;(.*?)&gt;
使用这种模式和相同的替换,它应该可以工作。那个*?量词使它不贪婪,所以它尽可能早地停止匹配任何东西


请注意,用正则表达式解析HTML是个坏主意。即使部分HTML被转义,它仍然是一种不规则的硬语言。这最终是行不通的。改用解析器。或者对于您的用例,只需使用许多易于查找和使用的语法突出显示库中的一个

您最好将代码放在pre或类似版本中,并使用库来突出显示语法。滚动你自己的将是一个很大的工作。比如说,我在手机上写的。模式可能包含键入错误。好的,谢谢你的回答。我现在正在使用语法突出显示库:
&lt;(.*?)&gt;