javascript - 我如何使用 RegExp 用 ${var} 替换模板?

标签 javascript node.js

例如:

使用/\${key}/作为正则字符串即可,替换成功

但是直接使用字符串'${key}',答案不是我想要的

如果我使用 split 和 join 会不会更慢?

let tp1 = "XXX${key}XXX${key}XXX${key}XXX${key}";
tp1 = tp1.replace(new RegExp(/\${key}/, 'g'), 'AA');
console.log(tp1)

let tp2 = "XXX${key}XXX${key}XXX${key}XXX${key}";
tp2 = tp2.replace(new RegExp('${key}', 'g'), 'AA');
console.log(tp2)

let tp3 = "XXX${key}XXX${key}XXX${key}XXX${key}";
tp3 = tp3.split(`\${key}`).join('AA')
console.log(tp3)
Answer:
tp1: XXXAAXXXAAXXXAAXXXAA
tp2: XXX${key}XXX${key}XXX${key}XXX${key}
tp3: XXXAAXXXAAXXXAAXXXAA

最佳答案

$ 表示正则表达式中的字符串结尾,这就是为什么您需要使用 \ 对它进行转义。如果您使用带有正则表达式字符串的构造函数,则需要对其进行双重转义:'\\${key}' 以便它在字符串中保持反斜杠

let tp1 = "XXX${key}XXX${key}XXX${key}XXX${key}";
tp1 = tp1.replace(new RegExp(/\${key}/, 'g'), 'AA');
console.log(tp1)

let tp2 = "XXX${key}XXX${key}XXX${key}XXX${key}";
tp2 = tp2.replace(new RegExp('\\${key}', 'g'), 'AA');
console.log(tp2)

let tp3 = "XXX${key}XXX${key}XXX${key}XXX${key}";
tp3 = tp3.split(`\${key}`).join('AA')
console.log(tp3)

关于javascript - 我如何使用 RegExp 用 ${var} 替换模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56182624/

相关文章:

javascript - 从外部源加载 html

javascript - IE 和 setInterval() 不刷新/更新的问题

Javascript、Jquery 在本地主机中工作正常,但在部署的站点中却不行?

Node.js 读取 ECONNRESET

javascript - module.exports 在 node.js 应用程序中冲突/被覆盖

javascript - 数组索引的开关大小写

javascript - 使用 JavaScript 更改元素上的 CSS 类,无需 FOUC

javascript - 从主进程向所有渲染进程 Electron 广播事件

javascript - 在异步等待中的try-catch中处理 'throw error'是否有问题?

node.js - 在多个文件/模块中使用相同的模块