<万博manbetx平台>使用捕获组获取重复最多的字符及数量(二) - 万博manbetx平台中文网
点击切换帐号登陆
帐号密码登陆

使用捕获组获取重复最多的字符及数量(二)

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平台>
```


任务

?不会了怎么办
无数据提示暂无评论哟...我要评论
网站导航
标签地图
学习路径
视频教程
开发软件
旗下子站
技术文章
文档工具
关于我们
企业合作
人才招聘
联系我们
讲师招募
QQ交流群
QQ官方交流群
微信公众号
微信公众号