标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。