我正在尝试替换字符串模板中的值,我试图这样做:
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 {
}
答案 0 :(得分:2)
双重转义特殊字符,一次为字符串,一次为正则表达式。
此外,无需转义大括号。
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;