本代码密码复杂度8-25位,特殊字符、数字、字母大小写全都支持,可以直接cp使用
public class PasswordGenerator {private static final char[] CHARR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%&*".toCharArray();private static final String PASSWORD_REGEX = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z._~!@#$^&*=?','+'。'-'/]+$)(?![a-z0-9]+$)(?![a-z._~!@#$^&*=?','+'。'-'/]+$)(?![0-9._~!@#$^&*=?','+'。'-'/]+$)[a-zA-Z0-9._~!@#$^&*=?','+'。'-'/]{8,20}$";private static final Pattern PASSWORD_PATTERN = pile(PASSWORD_REGEX);public static String generatePassword(int length) {length = length < 8 ? 8 : length;length = length > 25 ? 25 : length;String result = getRandomPassword(length);Matcher m = PASSWORD_PATTERN.matcher(result);if (m.matches()) {return result;}return generatePassword(length);}private static String getRandomPassword(int length) {StringBuilder sb = new StringBuilder();ThreadLocalRandom r = ThreadLocalRandom.current();for (int x = 0; x < length; ++x) {sb.append(CHARR[r.nextInt(CHARR.length)]);}return sb.toString();}}