使用regexp查找并替换字符串中的字符串

时间:2016-06-09 14:30:36

标签: javascript regex

我在句子中用粗体表达某些单词。我对正则表达式了解不多,这不是我的代码,它几乎可以运行。

function updateHaystack(input, needle) {
        return input.replace(new RegExp('(^|\\s)(\' + needle + \')(|$)','ig'), '$1<b>$2</b>$3');
}

这使得

  • 丰度 - &gt;称之为丰富谨慎,然后。
  • 默认 - &gt; 默许的政权的结束!

但是,当单词前/周围有一个特殊字符时(单词不变为粗体),它不起作用:

  • 装置 - &gt;搜索他。 - ...仪器。
  • 拍卖师 - &gt;好吧,我猜“拍卖师”对我的简历来说可能是一件很酷的事。
  • clatter - &gt; (晃动)
  • 门把手 - &gt; [doorknob rattles]

1 个答案:

答案 0 :(得分:2)

这是因为你的正则表达式中的这部分发生了:

(^|\\s)

这意味着它正在寻找行开头或空白之后的搜索词。如果没有空格,则此匹配将失败。

如果您的搜索字词是,则可以使用字边界,如下所示,并将您的代码更改为:

function updateHaystack(input, needle) {
   return input.replace(new RegExp('\\b' + needle, 'ig'), '<b>$&</b>');
}

PS:根据下面的评论,它将与给定的单词匹配。因此man将匹配mandate,但不匹配woman