在使用$
作为替换值时,有人可以向我解释为什么JavaScript会输出单个$$
吗?
"hi".replace("hi", "$$bye$$");
"hi".replace("hi", "\$\$bye\$\$");
//both output -> $bye$
//but I expected $$bye$$
答案 0 :(得分:2)
$
充当该函数的替换字符串中的元字符。字符串$$
用于表示您只需要$
。否则,$
后跟数字会引用正则表达式中捕获组的内容。举个例子:
alert("aaabbb".replace(/(a+)(b+)/, "$2$1")); // bbbaaa
字符串“\ $ \ $ bye \ $ \ $”与字符串“$$ bye $$”完全相同。因为$
不是 string 语法中的元字符,所以它前面的反斜杠将被忽略。
你可以在反斜杠上加倍,让它们在字符串常量解析中存活,但.replace()
函数不会特别注意它们,你会在结果中获得\$\$
。