为什么用$$替换只会产生$

时间:2016-07-27 07:39:49

标签: javascript google-chrome

在Chrome 52中测试代码

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

结果应为" $$",但console.log显示" $"。

为什么有一个$而不是两个$$

2 个答案:

答案 0 :(得分:5)

因为$$replace替换字符串中的特殊标记。在replace替换字符串中,$是转义字符(more on MDN)。要将$$实际放入字符串中,请使用$$$$

以下是可以使用的$序列序列:

  • $$ - 插入$
  • $& - 插入匹配的子字符串。
  • $` - 插入匹配子字符串之前的字符串部分。
  • $' - 插入匹配子字符串后面的字符串部分。
  • $n其中n是小于100的非负整数,插入第n个带括号的子匹配字符串,前提是第一个参数是RegExp对象。

以下是使用所有这些内容的示例:



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 :(得分:2)

...因为$在替换字符串中具有特殊含义,$$表示文字$

请参阅MDN以获取此类特殊序列的列表。