首页 > 解决方案 > 在捕获组前面插入 $

问题描述

我有以下输入文本:

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 控制台和 String.prototype.replaceChrome Devtools 中的函数来测试连续 $ 符号的行为。

标签: javascriptregexregex-group

解决方案


Javascript 字符串中的反斜杠仅在其处于转义序列时才有意义- 例如,'\n'被翻译为文字换行符,被翻译为文字反斜杠等。如果您在属于的'\\'字符之前有一个反斜杠转义序列,例如,反斜杠将被忽略:'\$'

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

尽管如此,文字反斜杠并不能解决您的问题。请参阅文档- 插入文字$作为替换字符串的一部分,使用$$$这里本质上是一个转义字符,有点像\字符串文字中的转义字符):

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


推荐阅读