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’s.<br>";
var searchString = "Apple's";
谢谢
答案 0 :(得分:1)
你应该escape搜索字符串,以确保正则表达式正常工作,即使搜索字符串包含特殊的正则表达式元字符。
此外,不需要使用捕获组包装整个模式,您可以始终使用替换模式中的$&
占位符引用整个匹配。
以下是一个示例代码:
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;