js replace如何做变量替换呢?

例如
string = '${1} = ${2} + ${3}'
替换为
string = '${1} = ${2} + ${3#a1}'
目前我的方案是将${3}作为变量去string中做匹配

let a = '${3}'
string.replace(new RegExp(a,'g'),xxx)

但是报了如下的错误,请问这是什么原因呢?
image.png

阅读 3.4k
2 个回答

按字符串替换

var string = '${1} = ${2} + ${3}+${3}';

let a = '${3}'
string.replaceAll(a,'${3#a1}');
//'${1} = ${2} + ${3#a1}+${3#a1}'

JavaScript正则表达式需要转义的字符
https://blog.csdn.net/weixin_...

//可无脑转义元字符
var string = "^$.*+?|\\/[]{}=!:-,";
var regex = /\^\$\.\*\+\?\|\\\/\[\]\{\}\=\!\:\-\,/;

按正则替换

var string = '${1} = ${2} + ${3}+${3}';

let a = '\\$\\{3\\}'
string.replace(new RegExp(a,'g'),'${3#a1}');
//'${1} = ${2} + ${3#a1}+${3#a1}'

如果你只是不替换${2}${1}之类不太多,比如只有${9}以下,还是比较好替换的

oldString =  '${1} = ${2} + ${3}'
newString = oldString.replaceAll(/(?<=\$\{)[^2](?=\})/g,'$&#a1')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题