測試的代碼在Chrome 52
var a = "$$";
var b = "{data}";
var result = b.replace("{data}", a);
console.log(result);
結果應該是 「$$
」,但執行console.log顯示 「$
」。
爲什麼有一個$
而不是兩個$$
?
測試的代碼在Chrome 52
var a = "$$";
var b = "{data}";
var result = b.replace("{data}", a);
console.log(result);
結果應該是 「$$
」,但執行console.log顯示 「$
」。
爲什麼有一個$
而不是兩個$$
?
...因爲$
在替換字符串特殊的意義,以及$$
你如何表示文字$
。
這樣的特殊序列的列表,請參閱MDN。
因爲$$
是replace
替換字符串特殊令牌。在replace
替換字符串中,$
是一個轉義字符(more on MDN)。要將$$
實際放入字符串中,請使用$$$$
。
這裏的一系列$
序列可以使用:
$$
- 插入$
。$&
- 插入匹配的子字符串。$`
- 插入先於匹配的子串的部分。$'
- 插入下面的匹配的子串的部分。$n
其中n是一個非負整數比100更小,插入第n個括號內的子匹配串,所提供的第一個參數是一個正則表達式的對象。 下面是使用所有的人的例子:
var str = "This is a test.";
console.log(str.replace(
/\b(is) a\b/,
"[[\n" +
"Dollar sign: $$\n" +
"Matched: $&\n" +
"Before: $`\n" +
"After: $'\n" +
"Captured: $1\n" +
"]]"
));
實際上'$$$'對於'$$'替換就足夠了。 –
@GinoPane:恩,我不想擲骰子。假設你不控制後面的角色,而後面的角色恰好是一個有效的序列完成,比如'1'?更好地使用完整的序列,而不是半完整的序列。 –
使用'var a =「$$$$」'替代'double dollar'。 –