replace:将原有的字符串替换成我们新的字符
1)在不使用正则的情况,执行一次replace只能替换字符串中的一个
2)在replace中我们可以一次批量的把所有正则匹配的内容都替换掉-->replace是支持正则的
var str = "beijingnkayun~beijingxiaofe~";
// str = str.replace("beijing", "北京").replace("beijing", "北京");
str = str.replace(/beijing/g, "北京");
console.log(str);
原理:先按照正则指定的规则,到我们的字符串中把正则匹配的内容捕获到,然后在每一次捕获后,都把捕获的内容替换成新的内容
1)我们的正则表达式捕获到几次,对应后面的function就要执行几次
2)每一次执行function的时候,我们都可以获取我们获取的内容-->和我们单独执行一次exec捕获的内容一致
// arguments[0]-->exec捕获数组的第一项-->大正则捕获的内容
// arguments[1]-->exec捕获数组的index-->开始捕获的索引
// arguments[2]--> exec捕获数组的input-->捕获的原始字符串
str = str.replace(/beijing/g, function () {
console.dir(arguments);
})
不仅如此,我们小分组捕获的内容,在这里同样可以获取到。
3)我们在function中,通过return来返回我们要替换的内容--->是啥就把大正则捕获的内容进行替换。若不写return,默认是用undefined来替换的
str = str.replace(/(bei)(jing)/g, function () {
});
console.log(str);
如果不想实现替换的话,捕获的内容是啥,我们就返回啥->return arguments[0]
str = str.replace(/(bei)(jing)/g, function () {
return arguments[0];
});
console.log(str);
replace——获取次数最多的字符及次数
获取一个字符串中出现次数最多的字符,并且获取出现的次数
var str = "zzzzzzzchuangqianmingyueguang"
;
1)获取每一个字符出现的次数
var obj = {};
str.replace(/[a-z]/gi, function () {
var val = arguments[0];
obj[val] >= 1 ? obj[val] += 1 : obj[val] = 1;
});
2)获取最多出现的次数
var maxnum = 0;
for (var key in obj) {
obj[key] > maxNum ? maxNum = obj[key] : null;
}
3)把所有符合出现maxNum次数的都捕获到
var ary = [];
for (var key in obj) {
obj[key] === maxNum ? ary.push(key) : null;
}
console.log("出现次数最多的字符是:"+ ary.toString() + "~出现了" + maxNum + "次~")
replace——将小写的数字替换成大写的中文数字
var str = "全日制第七期学费:9800"; //玖捌零零
var ary = ["零", "壹","贰","叁","肆","伍","陆","柒","捌","玖"]
// 我们实现替换的话,需要捕获到数字,并且把数字当做ary的索引获取对应的汉字进行替换
str = str.replace(/\d/g, function () {
/*
第一次执行:大正则捕获的是9,返回的是ary[9]-->"玖"
第二次执行:大正则捕获的是8,返回的是ary[8]-->"捌"
...
*/
return ary[arguments[0]];
});
console.log(str);