java 自动生成密码,且必须包含大小写字母,数字,特殊字符四种中的三种
package com.yili; import java.util.Random; /** * Created by 韩西德 on 2017/7/23. */ public class Test { public static void main(String[] args) { String password = getRandomPassword(8); System.out.println(password); } //获取验证过的随机密码 public static String getRandomPassword(int len) { String result = null; /*if(len >= 6) { for(result = makeRandomPassword(len);len >= 6;result = makeRandomPassword(len)){ if (result.matches(".*[a-z]{1,}.*") && result.matches(".*[A-Z]{1,}.*") && result.matches(".*\\d{1,}.*") && result.matches(".*[~!@#$%^&*\\.?]{1,}.*")) { return result; } } }*/ while(len>=6){ 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 "长度不得少于6位!"; } //随机密码生成 public static String makeRandomPassword(int len){ char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^&*.?".toCharArray(); //System.out.println("字符数组长度:" + charr.length); //可以看到调用此方法多少次 StringBuilder sb = new StringBuilder(); Random r = new Random(); for (int x = 0; x < len; ++x) { sb.append(charr[r.nextInt(charr.length)]); } return sb.toString(); } }