目录
一、前言
进入正题前先放两个链接:
MDN-String.prototype.replace()
MDN-String.prototype.replaceAll()
想了解它们详细用法的朋友们通过上面的链接进入MDN即可,这里不做赘述;想快速了解用法的往下看。
二、replace 方法第二个参数为函数时,该函数参数如下
三、代码示例如下
let str = 'abcd12eddddf222AAA';
// 需求:找到 str 中跟在字母后面的连续数字,在它们的开头和结尾加上字符@。
// 如 'abcd12eddddf222AAA' => 'abcd@12@eddddf@222@AAA'
let reg = /\w(\d+)(\w)/g; // 这里有两个捕获组,第一个是连续数字,第二个是连续数字后面的一个字母
let result = str.replace(reg, (subStr, group1, group2, offset, input, params) => {
// subStr 匹配到的子字符串, group1, group2 为捕获组,
//offset 匹配到的子字符串在原字符串中的偏移量, input 为原字符串, reg中没有命名捕获组 params 为 undefined
console.log(subStr, group1, group2, offset, input, params);
return subStr[0] + '@' + group1 + '@' + group2;
});
console.log(str);
console.log(result);