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

时间:2011-08-08 22:37:21

标签: javascript

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

示例:

  

布朗布朗尼在烤箱里。

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

  

B * rown b * rownies在烤箱里。

JS 中最好的方法是什么?

4 个答案:

答案 0 :(得分:7)

带有选项'ig'的正则表达式可以解决问题。

"Brown brownies are in an oven.".replace(/(b)(rown)/gi, "$1*$2")

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

var str = 'Brown brownies are in an oven.'
var s = 'brown';
var r = '*';
var re = new RegExp('('+s.substr(0,1)+')('+s.substr(1)+')','ig');
log(str.replace(re, '$1'+r+'$2'));

但您需要观看s以查找对正则表达式具有某些特殊含义的字符(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/regexp),并且还需要注意设置r。如果s的长度小于2,也会失败。

答案 3 :(得分:1)

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!