我正在尝试替换字符串模板中的值,并且我正在尝试这样做:
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/