1
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>")

这不适用于字符“。” 例如,因为它被解释为正则表达式元字符。但不是实际字符“。” 导致所有文本都被突出显示。如何排除那些特殊的元字符?

4

2 回答 2

1

JS 没有任何内置函数来转义正则表达式中的元字符,但你可以使用这个函数(来自这个答案):

function quotemeta(str){
    return str.replace(/[.+*?|\\^$(){}\[\]-]/g, '\\$&');
}

这将像这样使用:

var regex = new RegExp(quotemeta(stringToHighlight), "g");
于 2012-06-12T16:46:16.357 回答
0

您要么需要输入一个实际的正则表达式(通过在其前面放置“\”来转义“.”),或者您可以使用诸如http://phpjs.org/functions/strstr:551之类的函数来查找字符串文字

于 2012-06-12T16:48:44.160 回答