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

时间:2016-07-19 18:52:00

标签: 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 {

}

1 个答案:

答案 0 :(得分:2)

双重转义特殊字符,一次为字符串,一次为正则表达式。

此外,无需转义大括号。

&#13;
&#13;
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);
&#13;
&#13;
&#13;