我在句子中用粗体表达某些单词。我对正则表达式了解不多,这不是我的代码,它几乎可以运行。
function updateHaystack(input, needle) {
return input.replace(new RegExp('(^|\\s)(\' + needle + \')(|$)','ig'), '$1<b>$2</b>$3');
}
这使得
但是,当单词前/周围有一个特殊字符时(单词不变为粗体),它不起作用:
答案 0 :(得分:2)
这是因为你的正则表达式中的这部分发生了:
(^|\\s)
这意味着它正在寻找行开头或空白之后的搜索词。如果没有空格,则此匹配将失败。
如果您的搜索字词是字,则可以使用字边界,如下所示,并将您的代码更改为:
function updateHaystack(input, needle) {
return input.replace(new RegExp('\\b' + needle, 'ig'), '<b>$&</b>');
}
PS:根据下面的评论,它将与给定的单词匹配。因此man
将匹配mandate
,但不匹配woman
。