javascript用case不敏感替换all并在原始字符串中保持正确的大小写

时间:2013-10-03 14:30:41

标签: javascript

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

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>

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

1 个答案:

答案 0 :(得分:19)

只需使用捕获组:

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

See this working demo.

修改:详细了解如何捕获群组here.