// 字符串的replace方法
// const str = 'hello world'
// 首先,字符串的replace方法返回一个新的字符串,不改变原字符串
// console.log(str.replace('o', '我'))
// console.log(str)
// 第二个参数可以使用变量
// 第二个参数是字符串时
// const newStr = str.replace('o', '$$')
// console.log(newStr)
// const newStr = str.replace('o', '左$&右')
// console.log(newStr)
// const newStr = str.replace('o', '$`')
// console.log(newStr)
// const newStr = str.replace('o', '$\'')
// console.log(newStr)
// 这里$1和$2可以理解成正则里面设置的两个匹配规则,o和d
// 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
// 这里$1代表和前面正则中第一个子表达式相匹配的文本
// const newStr = str.replace(/(o)|(d)/g, '-$1-$2')
// console.log(newStr)
// 第二个参数是函数时
// \w 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'
// 如果我们要把字符串中的单词首字母大写, 可以进行如下操作
// let str = 'hello world',
// reg = /(\w)(\w*)/g;
// let newStr = str.replace(reg, function(match, p1, p2, offset, str) {
// console.log(match, p1, p2, offset, str);
// return p1.toUpperCase() + p2;
// });
// console.log(newStr)
// 字符串的replace方法的应用
// 假设我们有一个手机号 掩码手机号的实现
// let tel = '13194099515',
// res = '',
// tmp = '****';
// 方法1:
// res = tel.replace(/\d{4}(?=\d{4}$)/g, tmp); // 第一个参数是正则
// console.log(res)
// 方法2:
// res = tel.replace(/(\d{3})(\d{4})/g, '$1' + tmp); // 第一个参数是正则
// console.log(res)
// 方法3:
// res = tel.replace(tel.slice(3, -4), tmp); // 第一个参数是字符串
// console.log(res)
// 方法4:
// res = tel.replace(/(\d{3})(\d{4})(\d{4})/g, function(match, p1, p2, p3) {
// return p1 + tmp + p3;
// });
// console.log(res)
console