使用$ 0来引用Javascript String.replace中的整个匹配

时间:2010-10-23 03:33:11

标签: javascript regex replace

我在一组文本中突出显示搜索字符串的实例。我想在替换查询的不区分大小写的匹配时保留原始文本的大小写。这就是我的开始:

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>'; });
但是,我并不是这种外表的忠实粉丝。您如何建议进行此类字符串替换?

2 个答案:

答案 0 :(得分:26)

使用$&而非$0来引用整场比赛。我责怪Perl。

答案 1 :(得分:2)

使用$$ 0而不是$ 0

str.replace(/\$/,'$$')