为什么更换$$只会导致$
问题描述:
测试的代码在Chrome 52
var a = "$$";
var b = "{data}";
var result = b.replace("{data}", a);
console.log(result);
结果应该是 “$$
”,但执行console.log显示 “$
”。
为什么有一个$
而不是两个$$
?
答
因为$$
是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'?更好地使用完整的序列,而不是半完整的序列。 –
使用'var a =“$$$$”'替代'double dollar'。 –