突出显示匹配的文本,区分大小写以显示自动建议

时间:2013-05-28 06:25:56

标签: javascript jquery regex mustache

我正在为自动建议工作,我需要匹配关键术语,如果匹配的关键术语使其突出显示。我完成了这个,但问题是匹配时我正在看忽略情况。所以结果如果我正在寻找主页并且结果是Home,它会在fronend上显示时变为 home 。我正在使用小胡子作为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>");
              };
            }

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

2 个答案:

答案 0 :(得分:2)

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

例如:

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

在将其用作表达式之前,请不要忘记escape the string,否则当用户使用正则表达式元字符([home]*)时,您可能会遇到一些问题。

答案 1 :(得分:0)

尝试使用$&

  

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

示例代码:

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

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

  

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

示例代码:

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