You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ReactJS密码验证问题:如何限制密码长度不超过8位?

修复密码正则验证的长度限制问题

嘿,我一眼就看出问题所在了——你的正则里用了(?=.{8,}),这是要求密码至少8位,但你的需求是密码长度不能超过8位,所以9位的密码自然会通过验证啦。

咱们直接修正正则就能搞定:

const strongRegex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&*]).{1,8}$");

简单说下修改逻辑:

  • 去掉了原来的(?=.{8,})这个正向预查,换成直接在整个匹配规则里限定长度为.{1,8},意思是匹配1到8个任意字符
  • 开头的^和结尾的$确保整个密码字符串都被检查,不会出现部分匹配的漏网情况
  • 之前的四个正向预查(小写、大写、数字、指定特殊字符)全部保留,保证密码的复杂度要求

如果你的需求其实是密码必须恰好是8位(而不是不超过),那只需要把.{1,8}改成.{8}就行:

const strongRegex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&*]).{8}$");

现在再测试你的案例:

  • "Abd1$bas"(8位):返回true,符合预期
  • "Abd1$bass"(9位):返回false,完美符合你的需求啦

内容的提问来源于stack exchange,提问作者Mohammud Shahaparan Mojumder

火山引擎 最新活动