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

Kev*_*vin 16 javascript regex replace

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

text.replace(new RegExp('(' + query + ')', 'ig'), '<em>$1</em>');
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我需要逃避query以防止括号打破子匹配,所以我想我会尝试:

text.replace(new RegExp(query, 'ig'), '<em>$0</em>');
Run Code Online (Sandbox Code Playgroud)

$0似乎没有使用 - 所有匹配的字符串都被$ 0替换.然而,我找到了另一种选择:

text.replace(new RegExp(query, 'ig'), function(match) { return '<em>' + match + '</em>'; });
Run Code Online (Sandbox Code Playgroud)

不过,我不是很喜欢它的外观.你会怎么建议做这种类型的字符串替换?

小智 30

使用$&而不是$0指整个比赛.我责备Perl.