我如何用 ${var} 使用 RegExp 替换模板?

例如:


使用 /\${key}/ 作为常规字符串可以,替换成功


但是直接使用字符串'${key}',答案不是我想要的


如果我使用 split 和 join 会更慢吗?


let tp1 = "XXX${key}XXX${key}XXX${key}XXX${key}";

tp1 = tp1.replace(new RegExp(/\${key}/, 'g'), 'AA');

console.log(tp1)


let tp2 = "XXX${key}XXX${key}XXX${key}XXX${key}";

tp2 = tp2.replace(new RegExp('${key}', 'g'), 'AA');

console.log(tp2)


let tp3 = "XXX${key}XXX${key}XXX${key}XXX${key}";

tp3 = tp3.split(`\${key}`).join('AA')

console.log(tp3)

Answer:

tp1: XXXAAXXXAAXXXAAXXXAA

tp2: XXX${key}XXX${key}XXX${key}XXX${key}

tp3: XXXAAXXXAAXXXAAXXXAA


慕桂英4014372
浏览 177回答 3
3回答

交互式爱情

$表示正则表达式中的字符串结尾,这就是为什么您需要使用\. 如果您使用带有正则表达式字符串的构造函数,则需要对其进行双重转义:'\\${key}'以便它在字符串中保留一个反斜杠let tp1 = "XXX${key}XXX${key}XXX${key}XXX${key}";tp1 = tp1.replace(new RegExp(/\${key}/, 'g'), 'AA');console.log(tp1)let tp2 = "XXX${key}XXX${key}XXX${key}XXX${key}";tp2 = tp2.replace(new RegExp('\\${key}', 'g'), 'AA');console.log(tp2)let tp3 = "XXX${key}XXX${key}XXX${key}XXX${key}";tp3 = tp3.split(`\${key}`).join('AA')console.log(tp3)

一只甜甜圈

如果你想把它用作占位符,你只需要使用不同的引号 `` 而不是 ''let key = 'BB';let tp2 = "XXXBBXXXBBXXXBBXXXBB";tp2 = tp2.replace(new RegExp(`${key}`, 'g'), 'AA');console.log(tp2); //XXXAAXXXAAXXXAAXXXAAkey = '\\${key}';let tp3 = "XXX${key}XXX${key}XXX${key}XXX${key}";tp3 = tp3.replace(new RegExp(`${key}`, 'g'), 'AA');console.log(tp3); //XXXAAXXXAAXXXAAXXXAA

梵蒂冈之花

代替正则表达式,考虑定义一个接受并返回替换字符串的函数key,允许您使用模板文字:const insertKey = (key) => `XXX${key}XXX${key}XXX${key}XXX${key}`;console.log(  insertKey('AA'),  insertKey('foo'));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript