var stringToHighlight = [userinput] // may be any string like "foo", "bar" or "."
var stringToBeHighlighted = [any text] // Lorem Ipsum ...
到目前为止我已经
了var regex = new RegExp(stringToHighlight, "g")
var highlightedString = stringToBeHighlighted.replace(regex, "<span class='highlight'>$&</span>")
这不适用于角色“。”例如,因为它被解释为正则表达式元字符。但不是实际的字符“。”导致所有文本突出显示。如何排除这些特殊的元字符?
答案 0 :(得分:1)
JS没有任何内置函数来转义正则表达式中的元字符,但你可以使用这个函数(来自this answer):
function quotemeta(str){
return str.replace(/[.+*?|\\^$(){}\[\]-]/g, '\\$&');
}
将使用如下:
var regex = new RegExp(quotemeta(stringToHighlight), "g");
答案 1 :(得分:0)
您需要输入一个实际的正则表达式(通过在其前面放置“\”来转义“。”)或者您可以使用http://phpjs.org/functions/strstr:551之类的函数来查找字符串文字