JavaScript string.replace使用" $$"输出" $"

时间:2015-05-30 12:43:55

标签: javascript string

在使用$作为替换值时,有人可以向我解释为什么JavaScript会输出单个$$吗?

"hi".replace("hi", "$$bye$$");
"hi".replace("hi", "\$\$bye\$\$");

//both output -> $bye$
//but I expected $$bye$$

1 个答案:

答案 0 :(得分:2)

$充当该函数的替换字符串中的元字符。字符串$$用于表示您只需要$。否则,$后跟数字会引用正则表达式中捕获组的内容。举个例子:

alert("aaabbb".replace(/(a+)(b+)/, "$2$1")); // bbbaaa

字符串“\ $ \ $ bye \ $ \ $”与字符串“$$ bye $$”完全相同。因为$不是 string 语法中的元字符,所以它前面的反斜杠将被忽略。

你可以在反斜杠上加倍,让它们在字符串常量解析中存活,但.replace()函数不会特别注意它们,你会在结果中获得\$\$