星点 星点-正则工具 本系列首页
关于
版本 v1.0.0

密码正则表达式

“至少包含字母和数字”这类要求需要用先行断言。下面这条规则用两个 (?=...) 分别要求字母与数字,再限定长度与字符集。

默认正则

/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*?&]{8,20}$/

8-20 位,且同时包含字母与数字,允许常见特殊符号。

密码正则 · 规则说明

密码规则通常要求长度与字符类型组合。单纯写字符类无法表达“必须包含某类字符”,需要借助先行断言。

(?=.*[A-Za-z]) 表示从当前位置向后必须能找到字母,(?=.*\d) 表示必须能找到数字,两者都是零宽断言不消耗字符。

最后用 [A-Za-z\d@$!%*?&]{8,20} 限定总长度与允许字符。该规则不包含空格与中文。

正确示例

  • abc12345
  • Passw0rd!
  • a1b2c3d4

错误示例

  • abcdefgh
  • 12345678
  • abc123
  • abcdefghijklmnopqrstu

边界与注意事项

常见问题

Q:为什么要用 (?=...) 先行断言?

因为需要“必须包含某类字符”,而普通字符类只能描述“允许哪些字符”,无法强制某类字符至少出现一次。

Q:为什么 abcdefgh 不匹配?

虽然长度足够,但缺少数字,未满足 (?=.*\d) 的要求。

Q:能要求包含大小写和符号吗?

可以。使用密码(强)规则,它用四个先行断言分别要求小写、大写、数字与特殊符号。

Q:正则能判断密码强度吗?

正则可判断“是否满足规则”,但强度还取决于是否泄露、是否复用等,需要综合评估。

相关场景

手机号正则

匹配中国大陆 11 位手机号:首位为 1,第二位 3-9,其余 9 位为数字。

立即测试

邮箱正则

匹配常见邮箱:@ 前为字母数字与 . _ % + -,@ 后为域名,最后是至少 2 位字母的顶级域。

立即测试

URL 正则

匹配以 http:// 或 https:// 开头、含主机名与可选路径/查询的网址。

立即测试

IPv4 正则

匹配标准点分十进制 IPv4,每段取值 0-255。

立即测试

IPv6 正则

匹配完整写法(8 段十六进制)的 IPv6 地址。

立即测试

身份证正则

匹配 18 位居民身份证号:前 6 位地区码、8 位出生日期、3 位顺序码与 1 位校验位(可为 X)。

立即测试

日期正则

匹配 YYYY-MM-DD 格式日期,月份 01-12、日 01-31。

立即测试

日期时间正则

匹配日期与时间组合,日期与时间之间用空格或 T 分隔,秒可省略。

立即测试

UUID 正则

匹配标准 8-4-4-4-12 分段的 UUID 字符串。

立即测试

中文正则

匹配常用汉字区间 U+4E00–U+9FA5 的中文字符。

立即测试

用户名正则

字母开头,总长 4-16 位,只含字母、数字与下划线。

立即测试