Android Java应用开发:如何添加密码复杂度限制(禁止纯数字密码)
解决方案:新增禁止纯数字密码的校验规则
你可以通过正则表达式或字符遍历检查两种方式实现禁止纯数字密码的规则,以下是具体修改方案:
方法一:使用正则表达式校验
通过正则匹配纯数字字符串,在现有密码长度校验后添加新的判断逻辑:
修改后的完整代码
if (correo.equals("") || contraseña.equals("") || nombres.equals("") || apellidos.equals("") || edad.equals("")) { Toast.makeText(getActivity(), "Favor de llenar los datos completos", Toast.LENGTH_SHORT).show(); } else { if (!Patterns.EMAIL_ADDRESS.matcher(correo).matches()) { Correo.setError("Correo Invalido"); Correo.setFocusable(true); } else if (contraseña.length() < 8) { Contraseña.setError("Contraseña debe ser mayor o igual a 8 digitos"); // 修正原提示的数字错误 Contraseña.setFocusable(true); // 修正原代码聚焦错误,改为聚焦密码输入框 } else if (contraseña.matches("^\\d+$")) { // 新增:判断是否为纯数字密码 Contraseña.setError("Contraseña no puede ser solo numeros"); Contraseña.setFocusable(true); } else { RegistroAdministradores(correo, contraseña); } }
代码说明
^\\d+$是正则表达式:^匹配字符串开头,\\d匹配任意数字,+$表示一个或多个数字直到字符串结尾,整个表达式专门匹配纯数字字符串。- 顺带修正了原代码的两处小问题:密码长度提示的数字错误(从6改为8,和你需求的长度限制一致),以及错误提示后错误聚焦到邮箱输入框的问题。
方法二:遍历字符检查非数字
如果不想用正则,也可以通过遍历密码的每个字符,判断是否存在非数字字符:
新增工具方法
private boolean isAllDigits(String password) { for (char c : password.toCharArray()) { if (!Character.isDigit(c)) { return false; } } return true; }
在校验逻辑中调用
把方法一中的正则判断替换为:
} else if (isAllDigits(contraseña)) { Contraseña.setError("Contraseña no puede ser solo numeros"); Contraseña.setFocusable(true); }
两种方法都能实现需求,正则方式代码更简洁,遍历方式逻辑更直观,可根据个人习惯选择。
内容的提问来源于stack exchange,提问作者Juan
相关产品推荐
相关产品推荐

