2017-04-19 46 views
0

我想在我的网站中将HTML代码显示为文本。我在我的HTML下面的示例文本:JQuery:将样式添加到正则表达式匹配中

<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

我从手机发出这个提示。该模式可能包含输入错误。 – simbabque

+0

好的,谢谢你的回答。我正在使用语法高亮库:) –