You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Regex校验5位数字,限制重复字符不超过2位且排除12345/54321序列

5位数字校验正则调整方案

最终可直接使用的正则

JavaScript代码写法如下:

// 正则字面量写法
var PASSWORD_PATTERN = /^(?![\d]*(\d)\1{2})(?!12345)(?!54321)\d{5}$/
// 字符串写法(注意转义反斜杠)
var PASSWORD_PATTERN = "^(?![\\d]*(\\d)\\1{2})(?!12345)(?!54321)\\d{5}$"

规则说明

  • 整体用^和$包裹,严格匹配整个输入内容,避免部分匹配的问题
  • \d{5} 限定输入必须为恰好5位纯数字,排除非数字字符、长度不符的输入
  • (?![\d]*(\d)\1{2}) 负向先行断言:禁止出现任意3个连续相同的数字,满足相同数字连续重复次数不超过2次的要求,11234这类2次连续重复的内容可正常通过校验
  • (?!12345)(?!54321) 两个负向先行断言:直接拦截12345、54321两种连续序列的输入

原正则存在的问题

你之前写的正则不符合需求的核心原因如下:

  • 包含(?=[\D]*\d)规则,允许非数字字符存在,和5位纯数字的校验需求冲突
  • (?!.*(\d)\1)规则直接禁止了所有2次连续重复的数字,和你允许11234这类格式的要求矛盾
  • 未添加针对12345、54321两种序列的拦截规则

校验效果测试

合法输入示例

  • 11234:2次连续重复数字,无特殊序列,校验通过
  • 12134:无连续重复超2次,无特殊序列,校验通过
  • 12233:多组2次连续重复数字,无特殊序列,校验通过
  • 54322:非完全降序序列,校验通过

非法输入示例

  • 11123:3次连续重复数字,校验不通过
  • 12345:连续升序序列,校验不通过
  • 54321:连续降序序列,校验不通过
  • 1234a:包含非数字字符,校验不通过
  • 1234:长度仅4位,校验不通过

内容的提问来源于stack exchange,提问作者drak2000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:36:04