js的replace()方法的用法,以及replace替换含有 '$1'的string字符串的解决方案

replace替换对应的字符串  stringObject.replace(regexp/substr,replacement)

replacement 可以是字符串,也可以是函数。

1、当replacement是字符串的时候

let str = 'I am me, I not me';
str = str.replace('I','he');// 部分替换
console.log(str); // he am me, I not me
str = str.replace(/me/g,'he');// /g 是全局替换
console.log(str); // he am he, I not he

2、当需要替换的字符串是正则表达式的时候

let str = '10.00,22,20.11';
str = str.replace(/\d+(\.\d+)?/,'$10.00'); 
//  /\d+(\.\d+)?/  这个正则表达式是表示带小数的数字,例如:10.00
//中文货币符号替换成美元货币符号
console.log(str);  //  .000.00,22,20.11

这个时候发现,replace把10.00替换成$10.00的时候,却变成了 .000.00

原因是因为 $1 是切割正则表达式的第一个括号 (\.\d+),所以就分成了两步

第一步:(/\.\d+/)  =  '$1'      ===>     $1 =  '.00'

第二步:'$10.00' =  '$1' + '0.00'    ===>  str =  .000.00

解决这个问题就可以用下面这个当replacement是函数的方法,返回 function 的时候就没有 $1 对正则表达式的括号进行切割了。

3、当replacement是函数的时候

let str = '10.00,22,20.11';
str = str.replace(/\d+(\.\d+)?/,function(){
    return '$10.00';
}); 
console.log(str);  //  $10.00,22,20.11

 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值