大写字母:ABCDEFGHIJKLMNOPQRSTUVWXYZ
小写字母:abcdefghijklmnopqrstuvwxyz
数字:0123456789
特殊字符:!"#$%&'()*+,-./:;<=>?@[]^_`{|}~
以上四种全部包括
上代码
public static String getRandomPassword() {
int len = (int) (8 + Math.random() * (20 - 8 + 1));
String result = null;
while (len > 7) {
result = makeRandomPassword(len);
if (result.matches(".*[a-z]{1,}.*") && result.matches(".*[A-Z]{1,}.*") && result.matches(".*\\d{1,}.*") && result.matches(".*[!\"#$%&'\\()*+,\\-./:;<=>?@\\[\\]^_`{|}~]{1,}.*")) {
return result;
}
result = makeRandomPassword(len);
}
return null;
}
public static String makeRandomPassword(int len) {
char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~)".toCharArray();
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < len; ++i) {
sb.append(charr[random.nextInt(charr.length)]);
}
return sb.toString();
}