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