javascript - RegExp 对象查找和替换不起作用

标签 javascript typescript

我正在尝试替换字符串模板中的值,并且我正在尝试这样做:

for (var i in replacements) {
    var regexp = new RegExp('\$\{' + i + '\}', 'g');
    template = template.replace(regexp, replacements[i]);
}

这是我尝试替换其中值的模板:

<?php
class ${className} {

}

当我执行 console.log(i, replacements[i]) 时,我得到 className Test,但它没有将其替换到最终模板中。它根本不修改它。我这样做错了吗?

我正在寻找的输出是这样的:

<?php
class Test {

}

最佳答案

对特殊字符进行两次转义,一次用于字符串,一次用于正则表达式。

此外,无需转义大括号。

var replacements = {
  className: 'Test'
}

var template = '<?php class ${className} { }';

for (var i in replacements) {
  var regexp = new RegExp('\\${' + i + '}', 'g');
  template = template.replace(regexp, replacements[i]);
}

console.log(template);

关于javascript - RegExp 对象查找和替换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38466359/

相关文章:

javascript - 无 Chrome - 选择下拉值

javascript - 找不到 FirebaseUI 小部件错误

javascript - Angularjs 使用 API 集成到 django 项目中

typescript - 如何翻转 TypeScript 中联合的分布性?

reactjs - 类型 'MutableRefObject<HTMLInputElement | undefined>' 不可分配给类型 'string | ((实例 : HTMLInputElement | null) => void)

javascript - 有没有办法在 typescript 类中生成 getter 和 setter 对?

angular - 如何使用 web-ext-types 避免错误 TS2304

javascript(nodejs)while循环错误

javascript - 如何在 Yeoman 中等到复制操作完成

typescript - 如何在没有Webpack的 typescript 节点项目中使用.graphql