[英]`string.replace` weird behavior when using dollar sign ($) as replacement
我在我的 JavaScript 代碼中發現了一個錯誤,我將其隔離到字符串替換中,該錯誤的行為方式出乎我的意料。 以下是代碼示例:
var text = "as";
text = text.replace(text,"$\'");
console.log(text);
這將向控制台打印一個空字符串。 我期待它打印 $' 到控制台。 誰能解釋一下?
為了使用$
在生成的字符串,用$$
為$
在JavaScript的正則表達式的特殊含義和字符串replace
方法: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/字符串/替換#Specifying_a_string_as_a_parameter
如果我不知道我使用的替換字符串中有什么
replaceWith = "might have 2 $ signs $$ $$$ $$$$"
"a b c".replace("b", replaceWith) // unexpected result
"a b c".replace("b", function(){return replaceWith}) // no surprises
實際上,這個問題最直接的答案是使用替換字符串的函數,因為 w3c 規范聲明這個結果不會受到特殊字符的影響。
var str = "abc {def} ghi"; console.log(str.replace("{def}", function() { return "foo$'bar"; })); // result is // "abc foo$'bar ghi"
MDN 文檔在這里: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.