javascript数组怎么应用正则表达式匹配获取是否包含元素?

我有一个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);

参考GPT和自己的思路:

对于问题1,可以使用正则表达式来匹配。首先将数组转换为字符串,然后使用正则表达式匹配三个相同的数字,并返回这三个数字。代码如下:

let strA = a.toString();
let regex = /(\d)\1{2}/;
let match = regex.exec(strA);
if(match){
  console.log('包含三个相同的元素,为:' + match[0]);  
}

上述代码中,(\d)表示匹配数字,\1表示与第一个括号中匹配的内容相同,{2}表示重复2次,通过\1{2}匹配三个相同的数字。其中,match[0]表示匹配到的整个字符串。

对于问题2,可以先将数组排序,然后比较是否包含3,4,5,6,7。代码如下:

a.sort();
if(a.toString().includes('3,4,5,6,7')){
  console.log('含有一个5位数的顺序成员');
} else {
  console.log('不含有一个5位数的顺序成员');
}

上述代码中,a.sort()表示将数组进行升序排序,.toString().includes('3,4,5,6,7')表示将排序后的数组转换成字符串,并判断是否包含字符串'3,4,5,6,7'。如果包含,则说明该数组包含一个5位数的顺序成员,否则不包含。

正则是处理字符串的,你这一个列表正则怎么处理?

算了,最后for 循环遍历解决问题,但还是感谢大家!