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

RegExp object find and replace not working

本文关键字:替换 不起作用 查找 对象 RegExp      更新时间:2023-09-26

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

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])时,我得到classNameTest,但它不会在最终模板中替换它。它根本不会修改它。我做错了吗?

我正在寻找的输出是:

<?php
class Test {
}

对特殊字符进行两次转义,一次用于字符串,另一次用于Regex。

此外,无需转义花括号。

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);