【问题标题】:Preserving case / capitalization with JavaScript replace method使用 JavaScript 替换方法保留大小写/大写
【发布时间】:2011-06-09 17:06:31
【问题描述】:

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

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

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

【问题讨论】:

  • 一段有用的代码可能是jQuery Highlight Plugin。即使你不使用 jQuery,你也可以检查代码,它非常简洁。

标签: javascript regex replace


【解决方案1】:

你可以使用:

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

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

【讨论】:

    【解决方案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

    【讨论】:

      猜你喜欢
      • 2013-10-15
      • 1970-01-01
      • 2022-01-16
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2018-05-27
      • 2011-03-30
      相关资源
      最近更新 更多