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

Java基于正则实现2小写+8数字共10位密码校验的问题咨询

问题分析

你当前使用的正则无法匹配需求,存在以下问题:

  • 仅校验了密码中至少存在1位数字、1位小写字母,没有限定两类字符的精确出现次数
  • 仅要求密码长度不小于8位,没有限定总长度固定为10位
  • 仅排除了空白字符,没有禁止大写字母、特殊符号等其他非法字符
修复方案

你可以使用以下正则实现需求:
^(?=(?:[^a-z]*[a-z]){2}[^a-z]*$)(?=(?:\D*\d){8}\D*$)[a-z\d]{10}$

对应的Java代码修改如下:

System.out.print("Password: ");
Scanner pass=new Scanner(System.in);
String password=pass.next();
// 修正后的正则,Java中需要对反斜杠做转义
String password_regex="^(?=(?:[^a-z]*[a-z]){2}[^a-z]*$)(?=(?:\\D*\\d){8}\\D*$)[a-z\\d]{10}$";
boolean password_result=password.matches(password_regex);

if(password_result){

正则规则说明

  • (?=(?:[^a-z]*[a-z]){2}[^a-z]*$):正向预查,校验整个字符串中恰好包含2个小写英文字母
  • (?=(?:\\D*\\d){8}\\D*$):正向预查,校验整个字符串中恰好包含8个数字
  • [a-z\\d]{10}:校验整个字符串只能由小写字母和数字组成,总长度固定为10位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 05:36:03