【发布时间】:2012-04-04 17:33:38
【问题描述】:
我正在开发 WebApp。我有快速搜索文章的功能。
用两个词的结构是:
- 页面
- 包含由 ajax 获取的文章的全局数组(json,100-150 项)。 (带有字段:id、title、sn-p)。 Title & Snippet 可能包含简单的样式标记标签。
所以,当用户在 popup-quicksearch 字段中输入查询时,应用程序
- 在全局数组中搜索
- 如果找到匹配项,
push到临时搜索结果数组(带缓存) - 在 temp 中突出显示匹配项。结果数组并显示给用户
如您所见,原始数组没有修改。
目前我正在使用原始 String.indexOf,但它无法匹配通过 html 标记文本格式化的文本(如下示例):
问题是关于 RegEx 模式的。我清楚地知道不建议使用 RegEx 来操作 DOM,并且期望下面的结果在语义上不正确,但 它符合需求。
例如: 我们有这样的东西:
<ul><li>Item <i><span style="color:red">Y</span></i></li></ul>
我们需要突出显示查询e,预期结果:... It<em>e</em>m ...,但如果使用琐碎的replace(/e/ig, '<em>$&</em>'),它也会在style="color:red" 中替换e。
即什么 RegEx 模式不接触标签中的单词?
第二个例子:我们需要突出显示Item Y,所以期望结果是<ul><li><em>Item <i><span style="color:red">Y</em></span></i></li></ul>
【问题讨论】:
-
“我清楚地知道不建议使用 RegEx” ...不,您显然不这样做。使用 HTML 解析器。
标签: javascript regex tags string-matching replace