我有一个array
a =[1,4,'A',3,3,3,5,6,7]
我想通过正则表达式查找a并返回以下结果:
1)是否含有3个一样的成员?如果有,这3个一样的成员是什么?(a中有3个3)
2)是否含有一个5位数的顺序成员?(a中有3,4,5,6,7,应当返回ok,否则no)
请教!
我有一个array
a =[1,4,'A',3,3,3,5,6,7]
我想通过正则表达式查找a并返回以下结果:
1)是否含有3个一样的成员?如果有,这3个一样的成员是什么?(a中有3个3)
2)是否含有一个5位数的顺序成员?(a中有3,4,5,6,7,应当返回ok,否则no)
请教!
参考GPT和自己的思路:
对于第一个问题,可以利用正则表达式结合数组的filter()函数来实现。具体的代码如下所示:
// 判断是否有3个相同的元素
var reg = /^([^\d]+)?(\d)(\1?\d)(\1?\2\3){0,1}$/;
var result = a.filter(function(item, index, arr) {
var temp = arr.slice(index+1).filter(function(item2){
return item === item2;
});
if (temp.length >= 2) {
return true;
}
}).map(function(item) {
var temp = a.slice(a.indexOf(item)).filter(function(item2) {
return item === item2;
});
if (reg.test(temp.join(''))) {
return temp[0];
}
});
console.log(result);
对于第二个问题,可以利用正则表达式结合数组的join()函数来实现。具体的代码如下所示:
// 判断是否有一个5位数的顺序成员
var reg = /34567/;
var result = reg.test(a.join('')) ? 'ok' : 'no';
console.log(result);