【发布时间】:2017-03-03 21:11:17
【问题描述】:
我想在字符串中找到子字符串并将它们全部替换。子字符串包含一些特殊字符 ($)。我使用正则表达式并得到一些(对我而言)意想不到的结果。
请告诉我我的错误在哪里。
RegExp.escape = function(value) {
return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
}
var str = "[block $$text$$] ===";
var substr_old = "[block $$text$$]";
var substr_new = "[xxxxx $$text$$]";
console.log(str);
str = str.replace(RegExp(RegExp.escape(substr_old), 'g'), substr_new);
console.log(str);
结果:
before: [block $$text$$] ===
after: [xxxxx $text$] ===
为什么是 $?
我期待下一个结果:
before: [block $$text$$] ===
after: [xxxxx $$text$$] ===
【问题讨论】:
标签: javascript regex string replace escaping