我想要实现的是一个突出显示功能,其中搜索引擎返回正确的HTML部分,并突出显示正确的文本位。到目前为止它的作用。但是在这个文本中也包含了HTML标签,所以如果有人搜索“l”的字母“li”,那么突出显示功能(在找到的单词周围放置一个范围)会打破标签,这种情况是li标签。因为它会在l或i周围放置一个span标记。 这当然搞砸了整个页面。所以, 我创建了一个与所有HTML标签匹配的正则表达式,它就是这样做的!
/<[^<]*>/
由于只有搜索项目应该匹配而不是HTML标签,我就这样做了,
/((?!<[^<]*>)/
这是用于创建正则表达式的JavaScript行,其中"str"
是要突出显示的字符串。
var regex = new RegExp("((?!<[^<]*>)("+str+"))","gi");
我在Regex测试器中构建了RegExp,一切都很好,但是仍在执行脚本,搜索"li"
或遇到带有相同字母的标签的搜索,会导致页面搞砸了。
任何人都可以向我解释我做错了什么?