[英]Bug in JavaScript String.replace() with replace string "$'"?
在 Chrome Web Inspector 中嘗試以下代碼:
> "foo".replace("foo", "$'"); // dollar sign followed by single quote
< "" // wtf
您需要使用$$
因為$
用於引用組
var replaced = "foo".replace("foo", "$$'"); snippet.log(replaced);
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
$$ 插入一個“$”。
我現在使用的替代方案是
"foo".split("foo").join("$'")
看起來不錯,$ 符號應該包含數字或整數或浮點值,例如 $120'...
var res = str.replace("foo", "$1000'");
上面的解釋有些不完整。
string.replace
的第二個參數是一個替換函數。 當您提供一個字符串作為第二個參數時,它會被傳遞給默認替換函數,該函數解釋字符串並用匹配的子字符串替換$
。 它還將$1
、 $2
等替換為您可能在匹配表達式中定義的任何捕獲。
在 OP 的情況下,他不想要默認替換器。 他想要一個簡單地返回字符串的替換函數:
() => "leave my $ alone";
因此,這段代碼
console.log("replace foo with dollar".replace("foo", () => "$"));
將返回
replace $ with dollar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.