Java 如何随机产生8位包含英文数字标点符号

java随机生成8位密码-包括数字、大小写字母、特殊符号。

//返回随机产生的8位数
public  String getRandomPassword(int len) {
    String result= this.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);
 }

  //产生8位随机数
  public  String makeRandomPassword(int len){
   char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^&*.?".toCharArray();
   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();
   }

 完整的测试例子:

public class TestRandomNumber {
    public TestRandomNumber() {
    }

    public static void main(String[] args) {
        String randomNum = getRandomPassword(8);
        System.out.println(randomNum);
    }

    /**
     * 返回随机产生的8位数
     */
    public static String getRandomPassword(int len) {
        String 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 result;
    }

    /**
     * 产生8位随机数
     *
     * @param len 长度
     * @return
     */
    public static String makeRandomPassword(int len) {
        char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.".toCharArray();
        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();
    }
原文地址:https://www.cnblogs.com/chendezhen/p/14754021.html