javascript - 在捕获组前插入 $

标签 javascript regex regex-group

我有以下输入文本:

string name;
string type;
string class;
...

我希望将它们转换为以下内容:

string $name;
string $type;
string $class;
...

我对正则表达式的尝试:

Javascript:
"string name;".replace(/string (\w+)/,"string \$$1");
Produces (javascript console):
string $1;
string $1;
string $1;
...
Produces (regexr prompt):
string \$1;
string \$1;
string \$1;
...

为什么在第一个 $ 前面插入反斜杠不起作用?实现这一目标的正确表达方式是什么?

注意:我使用的是 regexr (运行客户端 javascript)批处理我的文本,Javascript 控制台和 Chrome Devtools 中的 String.prototype.replace 函数测试连续 $ 符号的行为。

最佳答案

Javascript 字符串中的反斜杠只有在 转义序列 中才有意义 - 例如,'\n' 被翻译成文字换行符, '\\' 被翻译为文字反斜杠等。如果您在一个字符前有一个反斜杠,该字符不是 转义序列的一部分,例如 '\$' ,反斜杠将被忽略:

const str = '\$';
console.log(str);
console.log(str.length);

不过,文字反斜杠不能解决您的问题。查看docs - 要插入文字 $ 作为替换字符串的一部分,请使用 $$($ 在这里本质上是一个转义字符,有点像\ 是字符串文字中的转义字符):

console.log(
  "string name;"
    .replace(/string (\w+)/, "string $$$1")
);

关于javascript - 在捕获组前插入 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53983283/

相关文章:

javascript - 在 Select2 中将数组传递给 val

python - 使用正则表达式在Python中的逗号和破折号之前和之后添加空格

regex - 这个递归正则表达式究竟是如何工作的?

javascript - 正则表达式 : how to exclude matched groups from $N?

regex - 有没有办法使用 sed 只删除完全匹配的字符串?

java - 如何处理与边界 '\\G' 关联的正则表达式?

javascript - 在嵌套的 div 中显示谷歌地图(拆分器)

javascript - 使用 Google Apps 脚本执行 SHA256withRSA

javascript - 开放层 3 : Show vector labels on hover

javascript - 无法解析 - Javascript 中的正则表达式