在RegEx(JavaScript)中正确转义变量

时间:2016-05-10 14:09:17

标签: javascript regex

不想问,但我放弃了:-(我找不到解决方案

我无法获得如何转义变量/字符串。

var highlight_chars_count = {{highlight_chars_count}};
var regex_string = "/(^\\w{" + highlight_chars_count + "})/";
var regex = new RegExp(regex_string);
$('h1').html(function(i, v) {
    return v.replace(regex, "<span>$1</span>");
});

此模式有效(没有“和变量”

var regex = new RegExp(/(^\w{2})/);

我认为解决方案就在这里 JavaScript regex pattern concatenate with variable ...但不能将其转移到我的正则表达式。

变量{{highlight_chars_count}}是一个树枝变量。不幸的是,我无法将变量插入到正则表达式模式中。

1 个答案:

答案 0 :(得分:4)

您不需要/,也可以不使用捕获组:

var regex_string = "^\\w{" + highlight_chars_count + "}";

然后

return v.replace(regex, "<span>$&</span>"); 
                                ^

请注意,当正则表达式是静态的(例如/.../)时,使用正则表达式文字表示法声明正则表达式时,必须使用正则表达式分隔符(var rx = /abc/g)。在这里,您使用构造函数表示法

此外,$&反向引用是指整个匹配文本,因此,不需要将整个模式与捕获组一起包含。

More information on RegExp regex literal and constructor notation at MDN