gpt4 book ai didi

JavaScript 正则表达式奇怪的行为

转载 作者:行者123 更新时间:2023-11-29 16:18:38 26 4
gpt4 key购买 nike

我已经简化了我遇到的问题。
如果我在 Chrome 中执行以下代码,我会得到一个奇怪的行为:

var a = "$&";
var b = "aba";

var c = b.replace(/a/, a);

console.log(c); // expected output is: "$&b$&"
// but output is: "aba"

但是如果我执行下面的代码,我会得到预期的输出

var a = "c";
var b = "aba";

var c = b.replace(/a/, a);

console.log(c); // expected output is: "cbc"
// and output is: "cbc"

有什么解决办法吗?
这是一个错误吗?
我是否必须以某种方式转义变量 a 中的字符串?

最佳答案

如果您想在替换字符串中使用 $,您需要使用 $$ 对其进行转义。 The $ character is used as a backreference :

var a,
b,
c;
a = "$$&";
b = "aba";
c = b.replace(/a/, a);
console.log(c); //$&ba

如果你想替换字符串中某个模式的所有实例,你需要 mark the regular expression as being global :

var a,
b,
c;
a = "$$&";
b = "aba";
c = b.replace(/a/g, a);
console.log(c); //$&b$&

关于JavaScript 正则表达式奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12866024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com