我遇到了一个奇怪的'意外行为'白色正在进行一些替换。例如,尝试运行:
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()的任何文档 - 它似乎是我认为足够了解的功能之一。替换字符串具有保留模式,$'
是其中之一。它必须以这种或那种方式逃脱。
我现在也认为这是一个重复的问题 - 我只是在第一次尝试时没有搜索正确的查询。