我遇到了以下问题:我需要在字符串中查找重复的字符。基本上我想要的是这样的正则表达式
hello - ["ll"];
here - ["ee"];
happiness - ["pp","ss"];
pupil - ["pp"];
我有一个匹配连续重复的字符
/([a-z])\1+/g
还有一个将匹配重复的字符和它们之间的所有内容的字符,就像这样一个
/([a-z])(?:.*)\1+/g
但无法找出正确的答案。
您可以使用
([a-zA-Z]).*(\1)
既然您已经确定要寻找一种解决方案,该解决方案可以处理字符串中的双字母以外的其他内容,则应使用非正则表达式方法,例如:
使用字符串中的字符数构建一个关联数组:
var obj={}
var repeats=[];
str='banana'
for(x = 0, length = str.length; x < length; x++) {
var l = str.charAt(x)
obj[l] = (isNaN(obj[l]) ? 1 : obj[l] + 1);
}
console.log(obj)
印刷
{ b: 1, a: 3, n: 2 }
然后建立一系列规格:
for (var key in obj) {
if (obj.hasOwnProperty(key) && obj[key]>1) {
repeats.push(new Array( obj[key]+ 1 ).join( key ));
}
}
console.log(repeats)
印刷:
[ 'aaa', 'nn' ]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句