使用正则表达式突出显示字符串中的变量单词

时间:2012-06-12 16:43:19

标签: javascript regex

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

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

2 个答案:

答案 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之类的函数来查找字符串文字