JavaScript .replace()在美元符号上

时间:2015-07-29 15:50:47

标签: javascript

我遇到了一个奇怪的'意外行为'白色正在进行一些替换。例如,尝试运行:

var data1 = "what is %data%";
var data2 = "what is data";

var toInsert = "wrong with '$'";

var result1 = data1.replace(/%data%/, toInsert);
var result2 = data2.replace('data', toInsert);

console.log(result1); //--> what is wrong with '
console.log(result2); //--> what is wrong with '

更换'$'符号时出错。我在这个示例中想要的结果是what is wrong with '$',但我得到了what is wrong with '。我最终做了一个解决方法:

var data = "what is %data%";
var toInsert = "wrong with '$'";
var tempInsert = toInsert.replace(/'\$'/g, "\\\\\\$\\\\\\");
var result = data.replace(/%data%/, tempInsert);
result = result.replace(/\\\\\\/g, "'");

这现在给出了预期的what is wrong with '$',但似乎是一项不应该用来实现结果的工作。这对我来说似乎很奇怪,或者我做了一些根本错误的事情?

在任何情况下,有没有办法在不更换三(或两)次的情况下达到结果?

修改

是的,我从不打扰查找String.prototype.replace()的任何文档 - 它似乎是我认为足够了解的功能之一。替换字符串具有保留模式,$'是其中之一。它必须以这种或那种方式逃脱。

我现在也认为这是一个重复的问题 - 我只是在第一次尝试时没有搜索正确的查询。

0 个答案:

没有答案