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

JavaScript正则表达式:如何编写验证含大小写、数字且至少8位的密码正则?

JavaScript密码验证正则表达式(满足长度+大小写+数字要求)

嘿,刚好我之前做用户认证模块的时候写过类似的正则,完全符合你要的密码验证要求,直接给你上代码和详细解释:

最终正则表达式

const passwordValidator = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/;

逐部分解释

我把这个正则拆成几个关键部分,方便你理解:

  • ^ 和 $:锚定整个字符串,确保我们检查的是完整的密码,而不是其中某一段
  • (?=.*[a-z]):正向预查断言,确保字符串里至少包含一个小写字母([a-z]覆盖a到z的所有小写),.*表示任意数量的任意字符可以出现在这个小写字母之前
  • (?=.*[A-Z]):同理,确保至少有一个大写字母
  • (?=.*\d):确保至少有一个数字(\d是[0-9]的简写)
  • .{8,}:匹配任意至少8个字符,这里的.代表除换行外的任意字符,{8,}表示长度必须≥8

使用示例

在JavaScript里,你可以用test()方法快速验证密码是否符合要求:

// 测试不同的密码情况
console.log(passwordValidator.test("MySecurePass123")); // ✅ true:满足所有条件
console.log(passwordValidator.test("mysecurepass123")); // ❌ false:缺少大写字母
console.log(passwordValidator.test("MYSECUREPASS")); // ❌ false:缺少小写和数字
console.log(passwordValidator.test("MyPass")); // ❌ false:长度不足8位
console.log(passwordValidator.test("MyPass!")); // ❌ false:缺少数字

额外小提示

如果你的需求后续要允许或限制特殊字符(比如只允许@$!%*?&这些),可以把.{8,}改成[A-Za-z\d@$!%*?&]{8,},这样就只会匹配包含这些允许字符的密码啦。

如果需要给用户更友好的错误提示(而不是只返回“密码无效”),建议拆分检查每个条件,比如:

function validatePassword(password) {
  if (password.length < 8) return "密码长度至少需要8个字符";
  if (!/[a-z]/.test(password)) return "密码需要包含至少一个小写字母";
  if (!/[A-Z]/.test(password)) return "密码需要包含至少一个大写字母";
  if (!/\d/.test(password)) return "密码需要包含至少一个数字";
  return "密码验证通过";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:02:18