JQuery:将样式添加到正则表达式匹配项
我想在我的网站上以文本形式显示HTML代码。我的html中有以下示例文本:JQuery:将样式添加到正则表达式匹配项,jquery,regex,replace,highlight,Jquery,Regex,Replace,Highlight,我想在我的网站上以文本形式显示HTML代码。我的html中有以下示例文本: <div id="test"> <p>Hello</p> <br /> <p>Hello2</p> </div> 这表明: <p>Hello</p> <p>Hello2</p> 在我的网站上 现在我想更
<div id="test">
<p>Hello</p> <br />
<p>Hello2</p>
</div>
这表明:
<p>Hello</p>
<p>Hello2</p>
在我的网站上
现在我想更改标签的颜色。我在互联网上发现了这样一个想法:用一个类替换一个RegExp,将相同的文本包装在一个span中,以改变该span的样式
我在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);
});
并得到以下结果:
<
<
我做错了什么 捕获组位于错误的位置。您将开始括号捕获到$1中,将closi结束括号捕获到$2中,这是您从未使用过的 你也不需要量词
<(.*?)>
使用这种模式和相同的替换,它应该可以工作。那个*?量词使它不贪婪,所以它尽可能早地停止匹配任何东西
请注意,用正则表达式解析HTML是个坏主意。即使部分HTML被转义,它仍然是一种不规则的硬语言。这最终是行不通的。改用解析器。或者对于您的用例,只需使用许多易于查找和使用的语法突出显示库中的一个 您最好将代码放在pre或类似版本中,并使用库来突出显示语法。滚动你自己的将是一个很大的工作。比如说,我在手机上写的。模式可能包含键入错误。好的,谢谢你的回答。我现在正在使用语法突出显示库:
<(.*?)>