在字符串中替换RegExp术语的问题

时间:2015-10-02 21:27:06

标签: javascript regex

var testString = "This string has a bad word in it to test";

function findBadWords(string) {
  var badWord = /\bbad\b | \bword\b | \btest\b/gi
  var isBadWord = string.match(badWord);
  if (isBadWord) {
    newString = string.replace(badWord," *** ");
  }
  document.write(newString);
}
findBadWords(testString);

所以我现在正在使用RegExp,我遇到了一个我不明白的问题。在上面的代码中,我设置了一个RegExp来查找"坏词"在一个字符串中。据我所知,我已将其设置为找到" bad"," word"和" test"只要在单词前后有单词边界。我遇到的问题是" word"没有被替换。如果我在" word"之前放了一个非坏词。它会被取代,但不会被取代。我试过取消一些单词边界或添加一些非单词边界而没有运气。有人会介意解释为什么这段代码的工作方式和我如何修复它?

谢谢!

另外,我知道使用document.write是一个糟糕的选择,但它只是用于测试我发誓!

1 个答案:

答案 0 :(得分:0)

这里的问题是{“1}}和”“空格字符。如果从正则表达式中删除空格,则效果很好。

\b