当替换字符串包含$'个字符时,请用奇怪的字符串替换方法结果。
示例:https://jsfiddle.net/1jns2eo9/
var p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';
var regex = /dog/gi;
document.getElementById('first').innerHTML = p.replace(regex, '$');
/// The quick brown fox jumps over the lazy $. If the $ reacted, was it really lazy?
document.getElementById('second').innerHTML = p.replace(regex, "$'");
/// The quick brown fox jumps over the lazy . If the dog reacted, was it really lazy?. If the reacted, was it really lazy? reacted, was it really lazy?
答案 0 :(得分:1)
您应该使用
转义字符replace(regex, "\$")
替换目标中的$具有特殊含义:将匹配组放入字符串
答案 1 :(得分:0)
这是因为使用replace
时,第二个参数可以使用special syntax使替换动态化。 $'
模式
插入匹配的子字符串之后的字符串部分。
例如,
var str = "abcd";
var regex = /b/;
console.log(str.replace(regex, "$'"))
您会得到acdcd
,因为 b 被其后的字符串ab cd 代替。
如果我们将$'
模式用作另一个字符串替换的一部分,这会更加明显
var str = "abcd";
var regex = /b/;
console.log(str.replace(regex, "(-replacement: $' :replacement-)"))
如果要避免这种情况并插入文字$'
,则可以使用$$
代替单个$
,这是用于插入简单文字{{1 }}字符,因此避免使用其他动态替换:
$