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

强密码正则校验无法识别正斜杠特殊字符问题咨询

问题根因

你的正则表达式与你设定的校验规则存在两处不匹配,这是导致/无法通过校验的核心原因:

  • 特殊字符必填校验的正向预查(?=.*[@$!%*?&])的字符集合仅包含@$!%*?&,未加入你要求的/字符,因此当密码仅使用/作为特殊字符时,无法通过预查校验。你之前尝试转义无效果,是因为问题本质是校验范围未包含/,和转义无关。
  • 后续全局允许字符集合[A-Za-z\d!$/%@]中额外包含了规则外的!字符,不符合你设定的「仅允许字母、数字、$/%@作为有效字符」的规则。

修正方案

修正后的正则表达式

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$/%@])[A-Za-z\d$/%@]{6,20}$/

调整说明:

  • 将必选特殊字符预查的集合调整为[$/%@],完全匹配你要求的特殊字符范围
  • 移除全局允许字符集合中多余的!字符,避免放行规则外的特殊字符
  • 移除原正则中不必要的/转义(在方括号字符集合内,/无需转义即可正常匹配)

效果验证

测试用例1:使用/作为特殊字符

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$/%@])[A-Za-z\d$/%@]{6,20}$/.test("Test/2")
// 返回结果:true,符合预期

测试用例2:使用@作为特殊字符

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$/%@])[A-Za-z\d$/%@]{6,20}$/.test("Test@2")
// 返回结果:true,符合预期

测试用例3:使用规则外的!作为特殊字符

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$/%@])[A-Za-z\d$/%@]{6,20}$/.test("Test!2")
// 返回结果:false,符合规则要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:06:04