我正在为自动建议工作,我需要匹配关键术语,如果匹配的关键术语使其突出显示。我完成了这个,但问题是匹配时我正在看忽略情况。所以结果如果我正在寻找主页并且结果是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>");
};
}
如何匹配所有字符,但在显示时应该是原始字符。
答案 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>");