使用$ {}的正则表达式

时间:2019-04-11 13:34:02

标签: regex

我无法使用此正则表达式:

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

只是$才是问题。

1 个答案:

答案 0 :(得分:3)

您未正确插入字符串:

console.log(`\$\{${myKey}\}`);

会让您${varHere}。将其放入RegExp中,它将尝试匹配$(行尾){varhere}次,这当然是无效的正则表达式。您需要转义表达式以获得所需的结果:

new RegExp(`\\\$\\\{${myKey}\\\}`, 'g')

相反,由于这里实际上不需要RegExp,因此您也可以使用更简单的字符串替换:

pString = varString.replace(`\$\{${myKey}\}`, 'test');