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

Angular TypeScript用正则做密码校验的连续顺序字符限制问题求解

满足要求的密码校验正则

直接给出最终可用的JavaScript版本正则:

const passwordReg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!“#$%&'()*+,\-./:;<=>?@[\]^_`{|}~ ])(?!.*(.)\1{3})(?!.*(?:012|123|234|345|456|567|678|789|987|876|765|654|543|432|321|210|abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz|zyx|yxw|xwv|wvu|vut|uts|tsr|srq|rqp|qpo|pon|onm|nml|mlk|lkj|kji|jih|ihg|hgf|gfe|fed|edc|dcb|cba|ABC|BCD|CDE|DEF|EFG|FGH|GHI|HIJ|IJK|JKL|KLM|LMN|MNO|NOP|OPQ|PQR|QRS|RST|STU|TUV|UVW|VWX|WXY|XYZ|ZYX|YXW|XWV|WVU|VUT|UTS|TSR|SRQ|RQP|QPO|PON|ONM|NML|MLK|LKJ|KJI|JIH|IHG|HGF|GFE|FED|EDC|DCB|CBA)).{8,256}$/;

规则拆分说明

正向校验(必须满足的条件)

  • (?=.*[a-z]):至少包含1个小写字母
  • (?=.*[A-Z]):至少包含1个大写字母
  • (?=.*\d):至少包含1个数字
  • (?=.*[!“#$%&'()*+,\-./:;<=>?@[\]^_{|}~ ])`:至少包含1个指定范围内的特殊字符,已处理连字符的转义问题避免范围识别错误

负向校验(禁止出现的情况)

  • (?!.*(.)\1{3}):禁止出现4个及以上连续重复的字符,符合最多3个连续重复的要求
  • 负向预查中的长串连续序列:覆盖大小写字母、数字的正序/倒序4位连续场景,1234、abcd、4321、DCBA这类连续顺序的字符都会被拦截,满足最多3个连续顺序字符的要求

长度限制

.{8,256}限定密码长度为8~256位,和原有规则保持一致

原有正则失效原因

你原来写的(?!.*(.{3}).*\2.*)逻辑是禁止重复出现任意3个字符的子串,和「连续顺序字符」的要求完全不匹配,所以无法实现对应的校验。
如果需要额外拦截键盘顺序类的连续字符(比如qwer、asdf),直接把对应的子串加到负向预查的序列列表里即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:03