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

密码强度校验正则误报求助:无特殊字符密码被判定有效

密码正则校验误报问题分析

你的正则规则出现误报的核心问题在于特殊字符集的写法错误:

在正则的字符集[#?!@$%^&*+-_]中,+-_这部分被解析成了ASCII字符范围(从+到_的所有字符),而非单独的+、-、_三个符号。

ASCII编码里,+的码值是43,-是45,_是95,这个范围内包含了:

  • 数字0-9(码值48-57)
  • 大写字母A-Z(码值65-90)

所以你的特殊字符预查(?=.*[#?!@$%^&*+-_])实际上会匹配密码里的数字或大写字母,导致不含特殊字符的Abcde0927也能通过校验。

修复方案

要解决这个问题,需要把-放在字符集的开头或结尾,或者用反斜杠转义,让它被当作普通字符处理:

// 方案1:把-放在字符集末尾
const re = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[#?!@$%^&*+_-]).{8,}$/

// 方案2:转义-
const re = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[#?!@$%^&*+\-_]).{8,}$/

调整后,字符集只会匹配你指定的特殊符号,不会包含数字和字母,就能正确校验密码是否符合要求了。

内容的提问来源于stack exchange,提问作者Wt.N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:25:30