我想发表评论,但堆栈不允许我,或者我似乎找不到它的按钮,所以必须在答案中这样做。
脚本有问题。
例如:
在以下字符串中突出显示 fox:
<img src="brown fox.jpg" title="The brown fox" /><p>some text containing fox.</p>
会破坏 img 标签:
var term = "fox";
term = term.replace(/(\s+)/,"(<[^>]+>)*$1(<[^>]+>)*");
var pattern = new RegExp("("+term+")", "i");
src_str ='<img src="brown fox.jpg" title="The brown fox" />'
+'<p>some text containing fox.</p>'
src_str = src_str.replace(pattern, "<mark>$1</mark>");
src_str = src_str.replace(/(<mark>[^<>]*)((<[^>]+>)+)([^<>]*<\/mark>)/,"$1</mark>$2<mark>$4");
src_str
我正在编写一个高亮脚本并解决了这个问题,但我没有意识到脚本可能必须在多个标签上高亮显示。
这是我如何通过尝试突出显示标签中的内容来避免破坏标签的方法,该脚本也突出显示内容中的多个实例,但不会突出多个标签:
str='<img src="brown fox.jpg" title="The brown fox" />'
+'<p>some text containing fox. And onother fox.</p>'
var word="fox";
word="(\\b"+
word.replace(/([{}()[\]\\.?*+^$|=!:~-])/g, "\\$1")
+ "\\b)";
var r = new RegExp(word,"igm")
str.replace(/(>[^<]+)/igm,function(a){
return a.replace(r,"<span class='hl'>$1</span>");
})
不确定如何组合这些脚本并突出显示多个标签,但我会继续关注这个线程。