替换字符串中所有出现的震荡现象,排除以相同字符开头的其他单词

时间:2019-05-30 07:52:09

标签: javascript string

我想替换句子中所有出现的字符串,但不应替换以相同字符串开头的其他单词。示例如果字符串是“ abc bb bb bbcv cc ccv”,而我想用“”替换bb和cc,那么我的预期输出应该是“ abc bbcv cc”。

我正在使用.replace方法,但是它也在单词“ bbcv”和“ ccv”中替换了bb和cc。

3 个答案:

答案 0 :(得分:0)

使用replace并匹配单词边界\b的任一侧:

const str = "abc bb bb bbcv cc ccv";
const res = str.replace(/\b(bb|cc)\b/g, "");
console.log(res);

您也可以去除多余的空格:

const str = "abc bb bb bbcv cc ccv";
const res = str.replace(/\b(bb|cc)\b/g, "").replace(/ {2,}/g, " ");
console.log(res);

答案 1 :(得分:0)

尝试使用在字词边界bb之前和之后的交替以及一个或多个可选空白来检查模式cc\b

Regex-/\b([\s+]?bb|cc[\s+]?)\b/ig

const str = "abc bb bb bbcv cc ccv";
const pattern = /\b([\s+]?bb|cc[\s+]?)\b/ig;
const replacedString = str.replace(pattern, function (match, p1) {
  return '';
});

console.log(replacedString);

答案 2 :(得分:0)

这是一种较短的方法,它删除每个space (\s),然后删除单词bbcc

var str = 'abc bb bb bbcv cc ccv';
var res = str.replace(/\s(bb|cc)\b/g, '');
console.log(res);