ZH
我的工具

密码正则表达式生成器与测试器

按规则(长度、小写、大写、数字、符号、禁止空格、禁止重复)生成适用于 JavaScript、PHP、Python、Java、.NET 或 HTML 的密码校验正则表达式。

代码
正则表达式
通过的样本
2
共 6 个

组成规则只是衡量强度的薄弱指标,长度才最重要。NIST SP 800-63B 建议至少 8 个字符(单因素认证为 15 个),至少允许 64 个字符,并通过比对已泄露密码列表而不是要求字符类型来检查。

测试结果
密码结果原因
Passw0rd!通过—
password未通过缺少大写字母,缺少数字,缺少符号
Sh0rt!未通过太短(6 个字符)
Aaa111!!!x未通过“111”重复
Good Pass1!未通过含有空格
Tr0ub4dor&3通过—
我的工具 →
广告

注册表单通常用正则表达式来强制执行密码规则:最小长度、至少一个小写字母、一个大写字母、一个数字和一个符号、不含空格。手写这样的模式,需要正确地叠加多个先行断言,并针对每种语言转义符号。勾选你需要的规则,即可得到现成的正则表达式,以及适用于 JavaScript、PHP、Python、Java、C# 或 HTML pattern 属性的代码;再粘贴示例密码,就能看到哪些通过、各自违反了哪条规则。

使用方法

  1. 设置最小和最大长度。
  2. 勾选必须出现的字符类型;如果想限定符号的范围,请列出允许的符号。
  3. 选择是否禁止空格和连续三次重复。
  4. 选择语言并复制代码。
  5. 输入测试密码(每行一个)以检查规则。

计算公式

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[符号])(?!.*\s)(?!.*(.)\1\1).{最小,最大}$

每个 (?=.*X) 都是要求某处必须出现 X 的先行断言;(?!.*\s) 禁止空白,(?!.*(.)\1\1) 禁止同一字符连续出现三次。最后一部分限定长度(勾选“只允许”时则限定允许的字符)。符号会针对各语言转义:JavaScript(u 标志)、PCRE、Python、Java 和 .NET 会转义 \ ] [ ^ -,而以 v 标志编译的 HTML pattern 属性则需要转义大多数标点。

示例

使用默认规则(8–64 个字符、四种类型都要有、不含空格、不得连续三次重复)时,6 个示例中有 2 个通过:Passw0rd! 和 Tr0ub4dor&3。“password”缺少大写字母、数字和符号;“Sh0rt!”只有 6 个字符;“Aaa111!!!x”中 1 和 ! 各重复了三次;“Good Pass1!”含有空格。

常见问题

只靠正则表达式就能让密码安全吗?

不能。它只强制格式。长度远比字符类型重要,NIST SP 800-63B 建议把新密码与已泄露密码列表比对,并允许使用很长的密码短语。务必在服务器端校验,而不只是在浏览器里。

为什么用 \A 和 \z 而不是 ^ 和 $?

在 PCRE、Python、Java 和 .NET 中,$ 也会匹配末尾换行符之前的位置,所以“Passw0rd!\n”会蒙混过关。\z(Python 中是 \Z,PHP 中是带 /D 的 $)只会在真正的末尾匹配。

emoji 和带重音的字母怎么计数?

带 u 标志的 JavaScript、带 /u 的 PHP 和 Python 把每个码点算作一个;Java 和 .NET 按 UTF-16 单元计数,因此一个 emoji 算作两个。é 这样的字母不在 a–z 范围内,所以在默认的符号规则下会被当作符号。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). 密码正则表达式生成器与测试器. https://kakao.mobile/zh/tools/password-regex-tool/

MLA

“密码正则表达式生成器与测试器.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/password-regex-tool/.

广告