javascript - 在正则表达式替换字符串中转义 $

标签 javascript regex

我想将字符串 dkfj-dkfj-sflj 转换为 dkfj-woop$dkfj-sflj

这是我尝试过的:

var my_string = "dkfj-dkfj-sflj";
var regex = new RegExp("(\\w+)-(\\w+)-(\\w+)", "g");
console.log(my_string.replace(regex, "$1$woop[\$$2]$3");

我的结果是:dkfj-woop$2-sflj。因为“$”位于“$2”捕获组前面,所以它会弄乱该捕获组。

假设我希望正则表达式和捕获组字符串的结构保持不变,那么转义“$”以使其有效的正确方法是什么?

最佳答案

这不是为 replace 转义 $ 的方式。反斜杠转义在解析器级别起作用,像 replace 这样的函数不能为像 \$ 这样的新转义序列赋予特殊含义,因为它们甚至看不到 \$。字符串 "\$" 与字符串 "$" 完全相同,两者生成相同的字符串。如果您想将反斜杠和美元符号传递给函数,则反斜杠本身需要转义:"\\$"

无论如何,replace 希望您使用 $$ 转义 $。您需要“$1$woop[$$$2]$3”$$ 表示文字 $$2 表示捕获组。

阅读Specifying a string as a parameterreplace文档中。

关于javascript - 在正则表达式替换字符串中转义 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26205178/

相关文章:

javascript - 是否有一些使用 AngularJS 的开源 Web 应用程序?

javascript - 正则表达式允许单词之间使用标点符号和空格

javascript - 在 JavaScript 中批量删除 URL 中的查询字符串

regex - Linux下c++ 11中正则表达式的奇怪行为

Javascript - Incasesensitif split() 而不使用 toLowerCase() 或 toUpperCase()

javascript - 计算数字落入的范围

javascript - Bootstrap 词缀

javascript - 按部分名称列出的 InDesign 目标 XML 结构元素

Java TextField 问题

ruby-on-rails - Searchkick 和正则表达式