使用美元符号($)替代时的string.replace怪异行为

我在我的JavaScript代码中发现了一个错误,该错误已隔离为以我意想不到的方式起作用的字符串替换。这是代码示例:


var text = "as";

text = text.replace(text,"$\'");

console.log(text);

这会将一个空字符串输出到控制台。我期望它在控制台上打印$'。谁能解释一下?


噜噜哒
浏览 1170回答 3
3回答

慕森卡

如果我不知道替换字符串中的内容,我会使用replaceWith = "might have 2 $ signs $$ $$$ $$$$""a b c".replace("b", replaceWith) // unexpected result"a b c".replace("b", function(){return replaceWith}) // no surprises

翻过高山走不出你

痛苦的是,可以说奇数字符串的$替换可以$“四舍五入”。因此(使用Chrome),"1,2,3,4".replace(/,/g, "$$$")给出"1$$2$$3$$4"。也就是说,在这里,一个转义符$加上一个未转义符(即$$$)的行为就像两个转义符($$$$)!使二合一的逃逸模式更加难闻。; ^)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript