我在一组文本中突出显示搜索字符串的实例。我想在替换查询的不区分大小写的匹配时保留原始文本的大小写。这就是我的开始:
text.replace(new RegExp('(' + query + ')', 'ig'), '<em>$1</em>');
在这种情况下,我需要转义query
以防止括号破坏子匹配,所以我想我会尝试:
text.replace(new RegExp(query, 'ig'), '<em>$0</em>');
但似乎没有使用$0
- 所有匹配的字符串都替换为$ 0。然而,我找到了另一种选择:
text.replace(new RegExp(query, 'ig'), function(match) { return '<em>' + match + '</em>'; });
但是,我并不是这种外表的忠实粉丝。您如何建议进行此类字符串替换?
答案 0 :(得分:26)
使用$&
而非$0
来引用整场比赛。我责怪Perl。
答案 1 :(得分:2)
使用$$ 0而不是$ 0
str.replace(/\$/,'$$')