我有以下输入文本:
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/