我正在开发 WebApp。我有快速搜索文章的功能。
用两个词结构是:
- 页
- 包含由 ajax 获取的文章的全局数组(json,100-150 项)。(带有字段:id、title、snippet)。Title & Snippet 可能包含简单的样式标记标签。
因此,当用户在 popup-quicksearch 字段中键入查询时,app
- 在全局数组中搜索
- 如果找到匹配项,
push
则到临时搜索结果数组(带缓存) - 突出显示温度中的匹配项。结果数组并显示给用户
如您所见,原始数组没有修改。
目前我正在使用原语String.indexOf
,但它无法匹配通过 html 标签文本格式化的文本(下面的示例):
问题是关于 RegEx 模式的。我清楚地知道不建议使用 RegEx 来操作 DOM,并且期望下面的结果在语义上不正确,但它符合需要。
例如:我们有这样的事情:
<ul><li>Item <i><span style="color:red">Y</span></i></li></ul>
我们需要突出显示 query e
,期待 result: ... It<em>e</em>m ...
,但如果使用 trivialreplace(/e/ig, '<em>$&</em>')
它也会替换e
in style="color:red"
。
即什么正则表达式模式不接触标签中的单词?
第二个例子:我们需要高亮Item Y
,所以期望的结果是<ul><li><em>Item <i><span style="color:red">Y</em></span></i></li></ul>