2016-07-27 167 views
1

測試的代碼在Chrome 52

var a = "$$"; 
    var b = "{data}"; 
    var result = b.replace("{data}", a); 
    console.log(result); 

結果應該是 「$$」,但執行console.log顯示 「$」。

爲什麼有一個$而不是兩個$$

+0

使用'var a =「$$$$」'替代'double dollar'。 –

回答

1

...因爲$在替換字符串特殊的意義,以及$$你如何表示文字$

這樣的特殊序列的列表,請參閱MDN

4

因爲$$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" + 
 
    "]]" 
 
));

+1

實際上'$$$'對於'$$'替換就足夠了。 –

+0

@GinoPane:恩,我不想擲骰子。假設你不控制後面的角色,而後面的角色恰好是一個有效的序列完成,比如'1'?更好地使用完整的序列,而不是半完整的序列。 –

相關問題