正则匹配不包含233、2333、23333的其他所有5位数字

目前只能想到这个

/^[134567890][124567890]{0,4}$/

这个第一位是2或者其他位是3也没有匹配到,有没有什么好的办法

自己写的B站弹幕屏蔽规则,所以只能用一句话正则。

阅读 3.9k
4 个回答

应该是这样 /^(?!23{2,4}\b)\d{1,5}$/, 请试着用23334或2334去验证高赞的答案。
测试数据

2333
23333
233
23334
2334
234
23
23423
5823
123
1
32
vv234
s2324
0

匹配0到五位的数字

let reg = /^((?!23{2,})\d){0,5}$/

这种需求也是少见,正向不好匹配,推荐楼主反向匹配。

var str = '2333';
var res = /(233+)/.test(str);
if(!res){
    console.log('做你的事情')
}else{
    console.log('你要排除的')
}

仔细想想你的要求,再加一句长度判断就可以了

var str = '1233322';
var res = /(233+)/.test(str);
if(res && str.length <= 5){
    console.log('你要排除的')
}else{
    console.log('做你的事情')
}
var arr=['1','12345','12334','12333','23333'];
    var reg=/^(?!\d*23{2,})\d{5}$/;
    console.log(arr.filter(item=>reg.test(item)))

这样试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进