首页 > 解决方案 > 使用 ${} 的正则表达式

问题描述

我无法让这个正则表达式工作:

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

这只是$一个问题。

标签: regex

解决方案


您没有正确插入字符串:

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

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

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

相反,由于您在这里并不真正需要 RegExp,您还可以使用更简单的字符串替换:

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

推荐阅读