使用捕获组获取重复最多的字符及数量(一)
1.实战: 获取重复最多的字符及数量
==========================
**知识点**
1. 捕获组
2. replace()的高级应用
------------------------------------------------------
1.捕获组:
-------
正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用
------------------------------------------------------
2.replace()的高级应用
-------------------
- replace(reg, function(){...}): 第二参数支持回调, 自动循环处理正则匹配到的字符串
------------------------------------------------------
### 示例源码: code/demo01.万博manbetx平台
```万博manbetx平台
<!DOCTYPE 万博manbetx平台>
<万博manbetx平台>
<head>
<meta charset="UTF-8">
<title>获取重复最多的字符及数量</title>
</head>
<body>
<script>
var str = 'erereadfaWQWefeEEEEksQafdfqefapqfdkfqQ123adfncmm';
console.log(str); // 查看原始字符串
var arr = str.split('');//用空字符先把字符串分割为字符串数组
console.log(arr); // 查看生成的数组
// 将生成的字符数组按字母表进行排序(不用传参)
str = arr.sort();
console.log(str); // 查看排序
// 将排序后的字符数组,再重新拼装成字符串,方便应用正则
str = arr.join('');
console.log(str);
var result = ''; // 返回重复最多的字母
var count = 0; // 初始计数器
// 捕获组:正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用
// /(\w)\1+/g // 这个正则,可以获取任意位置上的连续的字符,并把获取到的第一组结果放到集合中,给replace来循环遍历
// 集合中, $0: 表示集合中的连接字符组成的字符串,如'fffffffff', $1: 表示连续字符串中的第一个: 'f'
// $0, $1是固定命名,不得更改, 可以直接用在replace()中的回调函数的参数中
// 以上执行过程 ,可以通过 "单步调试" 非常直观的展示
var reg = /(\w)\1+/gi;
str.replace(reg,function($0,$1){
// console.log('$0',$0,'$1', $1);
if(count<$0.length){
count = $0.length;
result = $1;
console.log('$0',$0,'$1', $1, count);
}
});
console.log('最多的字符:'+ result +' ,重复的次数:'+count);//最多的字符:f ,重复的次数:10
</script>
</body>
</万博manbetx平台>
```