美元符号和单引号打断JavaScript字符串替换

美元符号和单引号打断JavaScript字符串替换,javascript,node.js,google-chrome,Javascript,Node.js,Google Chrome,Javascript代码: var testStr = "this is inside the {replace} expression"; var test2Str = "second $ short"; var test3Str = "third '$' short"; var test4Str = "third '$ ' short"; var test5Str = "third $' short"; var test6Str = "third '$$' short"; var test7

Javascript代码:

var testStr = "this is inside the {replace} expression";
var test2Str = "second $ short";
var test3Str = "third '$' short";
var test4Str = "third '$ ' short";
var test5Str = "third $' short";
var test6Str = "third '$$' short";
var test7Str = testStr.replace('{replace}', test2Str);
var test8Str = testStr.replace('{replace}', test3Str);
var test9Str = testStr.replace('{replace}', test4Str);
var test10Str = testStr.replace('{replace}', test5Str);
var test11Str = testStr.replace('{replace}', test6Str);

console.log("test2Str: " + test2Str);
console.log("test3Str: " + test3Str);
console.log("test4Str: " + test4Str);

console.log("test5Str: " + test5Str);
console.log("test6Str: " + test6Str);
console.log("test7Str: " + test7Str);
console.log("test8Str: " + test8Str);
console.log("test9Str: " + test9Str);
console.log("test10Str: " + test10Str);
console.log("test11Str: " + test11Str);
产生:

test2Str: second $ short
test3Str: third '$' short
test4Str: third '$ ' short
test5Str: third $' short
test6Str: third '$$' short
test7Str: this is inside the second $ short expression
test8Str: this is inside the third ' expression short expression
test9Str: this is inside the third '$ ' short expression
test10Str: this is inside the third  expression short expression
test11Str: this is inside the third '$' short expression
出于某种原因,“$导致replace函数将替换字符串分为两部分:一部分在正确的位置被替换,另一部分在整个字符串的末尾。这种行为在Chrome和节点v10.16.2命令行中是相同的。有什么想法吗?是否还有其他转义字符可能导致类似问题?

该.replace方法将替换字符串中的$视为元字符,用于指示正则表达式中的捕获组值。如果您想要一个简单的$,替换字符串应该包括$$


欢迎来到堆栈溢出!请四处看看,并通读一遍,特别是我还推荐乔恩·斯基特的。请在寄出前先通知我。更多关于搜索的信息。尖头,非常感谢您的快速响应!好吧,这看起来很奇怪,而且可能不一致。对于上述示例,我列出了:$插入了$,而不是文档中所述的内容。2$'表示应该插入匹配子字符串后面的字符串部分,但结果是分割参数字符串,并在参数前后复制目标字符串的其余部分。文档中有解释吗?3似乎最好有一个论点,在没有列出这些特殊模式的情况下进行替换?通常最好得出这样的结论:JavaScript这样的工作方式是正确的,是有意的,即使令人惊讶,考虑到它几乎是整个互联网的基础。嗯,不。在这个类似问题的底部贴出了一个更好的答案:。基本上,使用替换字符串的函数参数。它在文档中。很好的API,很完美。