1. 方法简介
该方法的签名是:replace([RegExp|String],[String|Function])
。
该方法 返回一个新的字符串,但并不改变字符串本身。
该方法接收2个参数,
第一个参数可以是字符串,也可以是一个正则表达式;
第二个参数可以是一个字符串,也可以是一个函数;
1 replace(字符串,字符串)
let str = '教程分成以下几个部分';
str = str.replace('分成','分为');
console.log(str); // 教程分为以下几个部分
2 replace(正则表达式,字符串)
let str = '教程分成以下几个部分,下面是教程的详细内容';
str = str.replace(/教程/g,'教学');
console.log(str); // 输出结果:教学分成以下几个部分,下面是教学的详细内容
3 replace(正则表达式,function(){})
对str使用RegArg做match()匹配,如果匹配到多项结果(比如使用了全局匹配g,或者分组),那么每一个匹配结果都将执行一次FuncArg函数,并且用该函数的返回值替代源字符串中的匹配项。
replace()函数第一个参数是简单正则表达式,第二个参数是函数时:
这个函数是有参数的,而且这些参数是默认的。
- arguments[0]是匹配到的子字符串
- arguments[1]是匹配到的子串的索引位置
- arguments[2]是源字符串本身
eg:把1000元以下的金额数用‘**’来替换掉。
var txt ='今日卖鱼1011元,油费使用了199元,吃饭用了89元。';
txt = txt.replace(/\d+/g,function(){
console.log(arguments);
return arguments[0].length > 3 ? arguments[0] : '*'.repeat( arguments[0].length);
});
console.log(txt); //今日卖鱼1011元,油费使用了***元,吃饭用了**元。
4 复杂用法,正则表达式使用分组
var txt ='分款如下:张三:5万,李四得到的少一点300元,王五最少100元。';
txt = txt.replace(/(\d+)(万)/g,function(){
console.log(arguments);
return arguments[1] + '0000' + '元';
});
console.log(txt); //分款如下:张三:50000元,李四得到的少一点300元,王五最少100元。
replace()函数第一个参数是分组正则表达式,第二个参数是函数时:
- arguments[0]是匹配到的子字符串
- arguments[1]是匹配到的第1个分组项
- arguments[2]是匹配到的第2个分组项
- arguments[3]是匹配到的字符串的索引位置
- arguments[4]是源字符串本身