不想问,但我放弃了:-(我找不到解决方案
我不知道如何转义变量/字符串。
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}} 是一个 Twig 变量。不幸的是,我也无法将变量插入到正则表达式模式中。
最佳答案
你不需要 /
并且你可以没有捕获组:
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
关于javascript - 在 RegEx (JavaScript) 中正确转义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37140977/