0

我正在为自动建议工作,我需要匹配关键术语,如果匹配的关键术语使其突出显示。我已经完成了这个,但问题是在匹配时我正在寻找忽略大小写。所以结果,如果我正在寻找,结果是家,它在前端显示时成为。我使用 mustache 作为 Ui 的模板引擎。使用的代码是:

var highLightRegExp = new RegExp(r.q , "ig");
//r.q - is query term.
            // Highlight the query part of the search term
            highlightText : function () {
              return function (text, render) {
                var renderTxt = render(text),
                    decodedText = $("<div/>").html(renderTxt).text();
                return decodedText.replace(highLightRegExp , "<b class='colorFFF'>" + r.q + "</b>");
              };
            }

如何匹配所有字符,但在显示时应该是原始大小写。

4

2 回答 2

2

$&在替换中使用(这是匹配的子字符串)而不是原始字符串。

例如:

decodedText.replace(highLightRegExp , "<b class='colorFFF'>$&</b>");

另外不要忘记在将字符串用作表达式之前对其进行转义,否则当用户使用正则表达式元字符 ( [home]*) 时可能会遇到一些问题。

于 2013-05-28T06:37:58.890 回答
0

尝试使用$&

$& 替换整个比赛的副本。

示例代码:

decodedText.replace(highLightRegExp , "<b class='colorFFF'>$&</b>");

或者,如果您习惯于()对子表达式匹配进行分组,请使用$1

$number 替换与组号匹配的子字符串。

示例代码:

decodedText.replace(highLightRegExp , "<b class='colorFFF'>$1</b>");
于 2013-05-28T06:56:05.700 回答