密码正则和用户名正则怎么写 - 强度校验实例

580 字
3 分钟
密码正则和用户名正则怎么写 - 强度校验实例

🌟 表单校验的高频需求#

注册/登录表单几乎都要校验用户名和密码。规则看似简单,写起来容易漏。本文给出常用写法,重点讲”至少包含某类字符”如何用前瞻断言实现。


👤 用户名正则#

规则:4~16 位,字母开头,可含字母、数字、下划线。

^[A-Za-z]\w{3,15}$

规则:只允许字母和数字(不允许下划线),6~20 位。

^[A-Za-z0-9]{6,20}$

规则:允许中文、字母、数字、下划线。

^[\u4e00-\u9fa5A-Za-z0-9_]{2,16}$

🔐 密码正则(按强度)#

基础:6~16 位任意字符#

^.{6,16}$

中等:至少含字母和数字#

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

较强:至少含大小写、数字、特殊字符#

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s])[^\s]{8,20}$

逐段说明:

片段含义
(?=.*[a-z])至少一个小写字母
(?=.*[A-Z])至少一个大写字母
(?=.*\d)至少一个数字
(?=.*[^\w\s])至少一个特殊字符
[^\s]{8,20}不含空格的 8~20 位

核心:(?=...) 前瞻只”检查存在”,不消费字符,因此可以叠加多个”至少包含”条件。详见正则前瞻与后顾。


🚫 排除常见弱密码#

限制”不能是纯数字或纯字母”:

^(?![0-9]+$)(?![A-Za-z]+$)[A-Za-z0-9]{8,20}$

(?![0-9]+$) 表示”整串不能全是数字”。


⚠️ 注意#

  • 正则只校验格式:无法判断密码是否已泄露、是否常见弱口令(需字典库);
  • 别过度严格:要求过多特殊规则会降低可用性,长度往往比复杂度更重要;
  • 后端必须再校验:前端正则可被绕过。

🔧 常见问题#

为什么密码正则要用前瞻? 因为"至少包含某类字符"是"存在性"条件,前瞻只检查不消费,最适合表达这种规则。
如何要求不含空格? 用 `[^\s]` 作为允许字符集,或在开头加 `(?!.*\s)`。
密码多长合适? 一般 8~20 位较常见;长度是强度的关键,复杂字符要求其次。

💬 总结#

用户名用”字符集 + 长度”即可;密码用**前瞻叠加”至少包含”**条件最灵活。常用规则可直接从常用格式正则取用并验证。

立即体验:访问 常用格式正则

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

最后更新于 2026-09-13,距今已过 33 天

部分内容可能已过时

相关文章 智能推荐
1
正则前瞻与后顾怎么用 - 断言语法详解与实例
正则工具 正则的前瞻(lookahead)与后顾(lookbehind)断言怎么用?本文用密码校验、金额、排除条件等实例,讲清正向/负向、前/后四种断言,并说明各语言兼容性差异。附在线正则测试工具。
2
身份证/银行卡正则怎么写 - 校验规则与示例
正则工具 身份证正则、银行卡号正则怎么写?本文给出 18 位身份证、15 位旧身份证、银行卡号的表达式与逐段解释,说明校验位与格式校验的区别。附在线常用格式正则工具。
3
Python 和 Java 正则怎么写 - 跨语言正则语法对照
正则工具 Python 和 Java 正则写法对照:原始字符串、命名捕获组、Flags、反向引用、前瞻后顾的差异,附代码示例。帮你把正则正确迁移到目标语言。在线多语言正则工具。
4
手机号正则和邮箱正则怎么写 - 常用正则表达式示例大全
正则工具 手机号正则、邮箱正则、身份证正则、URL正则、银行卡正则怎么写?给出可直接复制使用的表达式、逐段解释与正误示例,覆盖网络/联系/身份/日期/数字/字符/开发场景,并说明各语言引擎差异。附在线常用格式正则工具。
5
正则匹配中文怎么写 - 汉字/中文标点匹配方法
正则工具 正则怎么匹配中文?本文给出汉字范围 [\u4e00-\u9fa5] 与 Unicode 属性 \p{Script=Han} 两种写法,说明中文标点、全角字符、长度统计的注意点。附在线正则测试工具。
随机文章 随机推荐
公告
🎉 已升级 2.0 版本,欢迎使用。
分类
标签
站点统计
文章
197
分类
24
标签
747
总字数
334,099
运行时长
0 天
最后活动
0 天前

目录