Javascript不区分大小写的匹配和替换?

Javascript不区分大小写的匹配和替换?,javascript,Javascript,基本上,我需要能够在字符串(不区分大小写)中找到某些单词(通过“word”我指的是一组字符),如果它们匹配,我需要在该特定字符集的第一个字母后插入一个符号。我不能使用搜索替换,因为这不会保留案例 例如: 棕色的布朗尼在烤箱里 如果我要查找的单词是brown,而我要插入的字符是*,则结果应该是: B*rown B*Rownie在烤箱里 在JS中执行此操作的最佳方法是什么?您可以使用正则表达式,例如: var re = /(B)(rown)/gi; console.log("Brown brown

基本上,我需要能够在字符串(不区分大小写)中找到某些单词(通过“word”我指的是一组字符),如果它们匹配,我需要在该特定字符集的第一个字母后插入一个符号。我不能使用搜索替换,因为这不会保留案例

例如:

棕色的布朗尼在烤箱里

如果我要查找的单词是
brown
,而我要插入的字符是
*
,则结果应该是:

B*rown B*Rownie在烤箱里


JS中执行此操作的最佳方法是什么?

您可以使用正则表达式,例如:

var re = /(B)(rown)/gi;

console.log("Brown brownies are in an oven".replace(re, "$1*$2"));

带有选项“ig”的正则表达式就可以做到这一点

"Brown brownies are in an oven.".replace(/(b)(rown)/gi, "$1*$2")
但是您需要观察
s
中对正则表达式()有特殊意义的字符,并且还需要注意设置
r
。如果
s
的长度小于2,也将失败

function astAfterFirstLetter(words) {
  var re = new RegExp("\\b(?=" + words.join("|") + "\\b)(\\w)(\\w*)", "gi");
  return function (str) { return str.replace(re, "$1*$2"); };
}

astAfterFirstLetter(["brown", "cow"])("How now brown cow!")
产生

How now b*rown c*ow!

这必须更加通用,而不仅仅是针对特定的单词/字符串组合?如果有帮助的话,您可以动态创建regex模式。
[\w+]
应该实现什么?没有任何东西需要匹配加号、单词字符或空格。这只是为了给出一个想法,因为OP的帖子没有任何具体内容。只需添加
i
标志,使其根据OP不区分大小写
How now b*rown c*ow!