正则表达式单词搜索与撇号

时间:2018-04-24 19:31:04

标签: javascript regex

highlightStr: function (body, searchString){
    console.log(searchString);
    var regex = new RegExp('(' + searchString + ')', 'gi');
    console.log(regex)
    return body.replace(regex, "<span class='text-highlight'>$1</span>");
}

以上是我正在使用的代码。我想找到并替换searchString,它可以是任何东西。它适用于大多数单词,但在找到带撇号的单词时失败。

如何修改正则表达式以包含像appostrophe这样的特殊字符。

var body = "<br>I like that Apple&#x2019;s.<br>";
var searchString = "Apple's";

谢谢

1 个答案:

答案 0 :(得分:1)

你应该escape搜索字符串,以确保正则表达式正常工作,即使搜索字符串包含特殊的正则表达式元字符。

此外,不需要使用捕获组包装整个模式,您可以始终使用替换模式中的$&占位符引用整个匹配。

以下是一个示例代码:

&#13;
&#13;
var s = "I like that Apple's color";
var searchString = "Apple's";
var regex = new RegExp(searchString.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), "gi");
document.body.innerHTML = s.replace(regex, '<b>$&</b>');
&#13;
&#13;
&#13;