ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 在字符串中获取重复的字符

2019-10-03 15:34:43  阅读:403  来源: 互联网

标签:javascript string regex repeat character


我尝试匹配/获取字符串中的所有重复.这是我到目前为止所做的:

var str = 'abcabc123123';
var REPEATED_CHARS_REGEX = /(.).*\1/gi;

console.log( str.match(REPEATED_CHARS_REGEX) ); // => ['abca', '1231']

你可以看到匹配的结果是[‘abca’,’1231′],但我想要得到[‘abc’,’123′].有什么想法可以实现吗?

第二个问题:

我想到的另一件事是,可以更改持续时间char需要在字符串中匹配的持续时间…

例如,如果字符串是abcabcabc并且repetation-time设置为2,则应该导致[‘abcabc’].如果设置为3,则应为[‘abc’].

更新

非RegExp解决方案完全没问题!

解决方法:

好吧,我认为falsetru有一个零宽度前瞻的好主意.

'abcabc123123'.match(/(.+)(?=\1)/g)
// ["abc", "123"]

这允许它仅匹配初始子串,同时确保至少重复1次.

对于M42的后续示例,可以使用.*修改它.允许重复之间的差距.

'abc123ab12'.match(/(.+)(?=.*?\1)/g)
// ["ab", "12"]

然后,为了找到重复开始的位置,同时多次使用,可以为捕获组添加量词({n}):

'abcabc1234abc'.match(/(.+){2}(?=.*?\1)/g)
// ["abcabc"]

或者,为了仅将初始值与下面的重复次数相匹配,请在前瞻中添加量词.

'abc123ab12ab'.match(/(.+)(?=(.*?\1){2})/g)
// ["ab"]

它还可以匹配最小重复次数与范围量词,而不是最大值 – {2,}

'abcd1234ab12cd34bcd234'.match(/(.+)(?=(.*?\1){2,})/g)
// ["b", "cd", "2", "34"]

标签:javascript,string,regex,repeat,character
来源: https://codeday.me/bug/20191003/1850195.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有