不想问,但我放弃了:-(我找不到解决方案
我无法获得如何转义变量/字符串。
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}}是一个树枝变量。不幸的是,我无法将变量插入到正则表达式模式中。
答案 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