js当replace替换的字符是正则表达式时如:$
今天做项目碰到一个问题:将 '姓名:${name} 性别:${sex}' 转化为 '姓名:张三 性别:男' ,只是用repace的时候是没有问题的如:
let str = '姓名:${name} 性别:${sex}' newStr = str.replace('${name}','张三').replace('${sex}','男') console.log(newStr);//姓名:张三 性别:男
当出现多个${name}的时候就需要正则表达式了,如果不用的话为:
let str = '${name}和${name}的性别为${sex}' newStr = str.replace('${name}','张三').replace('${sex}','男') console.log(newStr);//张三和${name}的性别为男
用正则表达式的话, $符为结束的意思,就不会转义,看看这个例子(当你不知道有多少${name},并且有${age}、${sex}等等多个的时候就不能这么一次性写了):
let arr =[
{
old:'${name}',
new:'张三'
},
{
old:'${age}',
new:'17'
},
{
old:'${sex}',
new:'男'
}
]
let str = '${name}和${name}的性别为${sex}'
arr.forEach(item => {
str = str.replace( new RegExp(item.old,'g'),item.new);
})
console.log(str);//${name}和${name}的性别为${sex}
并没有转义,这时候只需要加上 \\ 号就可以了:
let arr =[
{
old:'${name}',
new:'张三'
},
{
old:'${age}',
new:'17'
},
{
old:'${sex}',
new:'男'
}
]
let str = '${name}和${name}的性别为${sex}'
arr.forEach(item => {
str = str.replace( new RegExp('\\'+item.old,'g'),item.new);
})
console.log(str);//张三和张三的性别为男
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」