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

标签 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}} 是一个 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/

相关文章:

Javascript/jQuery 以编程方式反转正则表达式

python - 更改 Path PosixPath 对象中的文件名前缀

javascript - 如何多次调用函数? (在 setInterval() 中)

javascript - 一键打开两个网址,同时避免 Chrome 中的弹出窗口拦截器

javascript - 构造函数内声明和构造函数外部声明的区别

如果字符串包含非法字符,则返回 Java 函数

java - 如何删除两个外部字符之间的所有内容?

javascript - 我怎么知道光标现在焦点在输入或文本区域或选择

javascript - 检查是否选中了组的任何单选按钮

Java,正则表达式捕获模式的多次出现