使用JavaScript替换方法保留大小写/大小写

时间:2011-06-09 17:06:31

标签: javascript regex replace

我正在使用Jquery UI继续研究搜索词建议工具。我现在正在使用粗体显示搜索项模式的结果。我通过修补Autocomplete的_renderItem方法实现了这个功能。我现在遇到的问题是被替换的字符具有与用户在输入中键入的字符相同的情况(例如,如果用户键入“A”并且返回的结果是“America”,则替换的文本将是 A meric A 。这是代码:

    var exp = new RegExp(this.term, "gi") ;
    var rep = item.label.replace( exp, "<span style='font-weight:bold;color:Black;'>"
    + this.term + "</span>");

一如既往,提前感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

您可以使用:

var rep = item.label.replace(exp,
                             "<span style='font-weight:bold;color:Black;'>$&</span>");

替换字符串时,$&表示“整个匹配”,因此您不必重复搜索字词(在某些情况下您不知道它)。在其他风格中,您可以使用$0\0 另外,请记住this.term中的escape special characters

答案 1 :(得分:2)

您可以通过将表达式封装在括号中来添加表达式

var exp = new RegExp("(" + this.term + ")", "gi") ;
var rep = item.label.replace( exp, "<span style='font-weight:bold'>$1</span>");

您可以使用$ 1参考该组。

请参阅here for more details about backreferences