我无法使用此正则表达式:
let varString = 'I am writing a ${varHere}';
let myKey = 'varHere';
pString = pString.replace(new RegExp(`\${${myKey}}`, 'g'), 'test');
但这可行:
let varString = 'I am writing a ${varHere}';
let myKey = 'varHere';
pString = pString.replace(new RegExp(`{${myKey}}`, 'g'), 'test');
// pString = 'I am writing a $test';
只是$
才是问题。
答案 0 :(得分:3)
您未正确插入字符串:
console.log(`\$\{${myKey}\}`);
会让您${varHere}
。将其放入RegExp中,它将尝试匹配$(行尾){varhere}次,这当然是无效的正则表达式。您需要转义表达式以获得所需的结果:
new RegExp(`\\\$\\\{${myKey}\\\}`, 'g')
相反,由于这里实际上不需要RegExp,因此您也可以使用更简单的字符串替换:
pString = varString.replace(`\$\{${myKey}\}`, 'test');