gpt4 book ai didi

javascript - 是否有必要使用正则表达式在 String.replace() 调用中转义替换字符串?

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

想知道是否有必要在 Javascript 中的替换操作的替换字符串中转义某些字符。我所拥有的是:

let t = "##links##";
let t2 = t.replace(/##links##/, `{"labels": ["'$'"]}`);
console.log(t2);

控制台输出为:

{"labels": ["'"]}

这真是令人惊讶。但是,我在文档中找不到任何建议转义替换字符串的内容。那么,这是怎么回事?

最佳答案

您需要将 $ 符号加倍以替换为文字 $:

let t = "##links##";
let t2 = t.replace(/##links##/, `{"labels": ["'$$'"]}`);
console.log(t2);

参见 Specifying a string as a parameter列出正则表达式替换部分中所有可能的“特殊”组合。

如果您查看该表,您会看到 $ 启动了“特殊”序列。因此,应该以某种方式对其进行转义。在 JS 中,美元用于转义文字美元符号。 $& 是对整个匹配的反向引用,$` 插入匹配子字符串之前的字符串部分,$' 插入该部分跟在匹配子串之后的字符串。 $n 是组 n 的反向引用。

所以,如果你有一个动态的、用户定义的替换字符串,它不应该有反向引用,你可以使用

let t = "##links##";
let rep = `{"labels": ["'$'"]}`;
let t2 = t.replace(/##links##/, rep.replace(/\$/g, '$$$$'));
console.log(t2);

关于javascript - 是否有必要使用正则表达式在 String.replace() 调用中转义替换字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44186787/

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