检查字符串的密码强度:由一类字符构成,输出”强度弱”;由两类字符构成,输出”强度中“;由三类以上(含三个)字符构成,输出”强度强“
Public String check (String password){
//放置代码
}
可以试下下面的代码:
public String check(String password) {
boolean hasLowerCase = false;
boolean hasUpperCase = false;
boolean hasDigit = false;
for (char c : password.toCharArray()) {
if (Character.isLowerCase(c)) {
hasLowerCase = true;
} else if (Character.isUpperCase(c)) {
hasUpperCase = true;
} else if (Character.isDigit(c)) {
hasDigit = true;
}
}
int categoryCount = 0;
if (hasLowerCase) {
categoryCount++;
}
if (hasUpperCase) {
categoryCount++;
}
if (hasDigit) {
categoryCount++;
}
if (categoryCount >= 3) {
return "强度强";
} else if (categoryCount == 2) {
return "强度中";
} else {
return "强度弱";
}
}
问题解答: Java代码判断密码强度问题:
以正则表达式为基础,对密码进行判断。弱密码:纯数字或纯字母;中密码:数字和字母的组合;强密码:数字、字母和特殊字符的组合。具体实现如下:
public class PasswordChecker {
/**
* 判断密码强度
* 弱密码:纯数字或纯字母
* 中密码:数字和字母的组合
* 强密码:数字、字母和特殊字符的组合
* @param password 待判断密码
* @return 密码强度
*/
public static int checkPasswordStrength(String password) {
// 密码强度标识:0-弱密码,1-中密码,2-强密码
int strongthFlag = 0;
// 匹配密码纯数字或纯字母
String pureNumPattern = "^[0-9]*$";
String pureLetterPattern = "^[a-zA-Z]*$";
Pattern pattern = null;
Matcher matcher = null;
// 纯数字判断
pattern = Pattern.compile(pureNumPattern);
matcher = pattern.matcher(password);
if (matcher.matches()) {
strongthFlag = 0;
System.out.println("密码强度:弱密码,密码只包含数字!");
return strongthFlag;
}
// 纯字母判断
pattern = Pattern.compile(pureLetterPattern);
matcher = pattern.matcher(password);
if (matcher.matches()) {
strongthFlag = 0;
System.out.println("密码强度:弱密码,密码只包含字母!");
return strongthFlag;
}
// 特殊字符判断
String specialContentPattern = ".*[@`~!#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!#¥%……&*()——+|{}‘;:”“'。,、?].*$";
pattern = Pattern.compile(specialContentPattern);
matcher = pattern.matcher(password);
boolean hasSpecialChar = matcher.matches();
// 数字和字母判断
String letterAndNumPattern = "^[A-Za-z0-9]+$";
pattern = Pattern.compile(letterAndNumPattern);
matcher = pattern.matcher(password);
boolean isLetterAndNum = matcher.matches();
if (hasSpecialChar && isLetterAndNum) {
strongthFlag = 2;
System.out.println("密码强度:强密码,密码包含数字、字母和特殊字符!");
return strongthFlag;
} else if (isLetterAndNum) {
strongthFlag = 1;
System.out.println("密码强度:中等密码,密码由数字和字母组成!");
return strongthFlag;
} else {
strongthFlag = 0;
System.out.println("密码强度:弱密码,密码由数字、字母和特殊字符组成!");
return strongthFlag;
}
}
}
字符串只由单一种类字符构成判断:
首先判空,然后通过正则表达式判断输入的字符串是否只由数字或字母等单一类型组成。实现代码如下:
public class StringCheck {
/**
* 判断字符串是否只由单一种类字符构成
* @param checkString 待检查字符串
* @return true-由单一种类字符组成;false-字符串中有两种或以上的字符
*/
public static boolean isSingleChar(String checkString) {
boolean isSingleChar = false;
if (checkString == null || "".equals(checkString)) {
System.out.println("输入字符串不能为空!");
return isSingleChar;
}
String pureNumPattern = "^[0-9]*$";
String pureLetterPattern = "^[a-zA-Z]*$";
Pattern pattern = null;
Matcher matcher = null;
pattern = Pattern.compile(pureNumPattern);
matcher = pattern.matcher(checkString);
if (matcher.matches()) {
System.out.println("输入字符串只由数字组成!");
isSingleChar = true;
return isSingleChar;
}
pattern = Pattern.compile(pureLetterPattern);
matcher = pattern.matcher(checkString);
if (matcher.matches()) {
System.out.println("输入字符串只由字母组成!");
isSingleChar = true;
return isSingleChar;
}
System.out.println("输入字符串由两种或以上的字符构成!");
return isSingleChar;
}
}