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

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来引用整个匹配项。我责怪Perl。

关于javascript - 使用$ 0引用Javascript的String.replace中的整个匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4002334/

10-13 05:27