16

我的问题是我想做这样的事情:

Javascript vaja => <b>Ja</b>vascript va<b>ja</b> 即我有一个查询字符串(ja),我想用更大的字符串(Javascript vaja)替换该查询字符串的所有出现(不区分大小写)。

我现在最接近的解决方案是:

"Javascript vaja".replace(/ja/gi, '<b>ja</b>');

这给了我:

"<b>ja</b>vascript va<b>ja</b>"

但我需要的是:

Javascript vaja => <b>Ja</b>vascript va<b>ja</b>

我想到的一种解决方案是在替换之前保留大写字母的索引,然后重新替换它们。但这太hacky了。我很确定我不是第一个尝试这个的人,并且很确定在某处隐藏了一些优雅而简单的解决方案。

4

2 回答 2

23

只需使用捕获组:

"Javascript vaja".replace(/(ja)/gi, '<b>$1</b>');

请参阅此工作演示。

编辑:在此处阅读有关捕获组的更多信息

于 2013-10-03T14:32:50.973 回答
0

const input  = "Javascript vaja";
const output = input.replace(/ja/gi, '<b>$&</b>');

console.log(output); // <b>Ja</b>vascript va<b>ja</b>

于 2021-09-09T23:22:47.940 回答