首页 > 其他分享 >js当replace替换的字符是正则表达式时如:$

js当replace替换的字符是正则表达式时如:$

时间:2022-11-18 10:57:51浏览次数:50  
标签:时如 old name js replace str new sex

今天做项目碰到一个问题:将 '姓名:${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);//张三和张三的性别为男

 

标签:时如,old,name,js,replace,str,new,sex
From: https://www.cnblogs.com/heibaiqi/p/16902458.html

相关文章