import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 6-20位 字母、数字、符号最少任意两种组合
* 字母、数字
* 字母、符号
* 数字、符号
* 字母、数字、符号
*/
public class PasswordUtils {
public static void main(String[] args) {
String specialCharacter="[_`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?-]";
String word="[a-zA-Z]";
String number="[0-9]";
StringBuilder regexBuilder=new StringBuilder();
regexBuilder.append("^");
regexBuilder.append("[");
regexBuilder.append("(").append(word).append("&").append(number).append(")");
regexBuilder.append("|");
regexBuilder.append("(").append(word).append("&").append(specialCharacter).append(")");
regexBuilder.append("|");
regexBuilder.append("(").append(number).append("&").append(specialCharacter).append(")");
regexBuilder.append("|");
regexBuilder.append("(").append(word).append("&").append(number).append("&").append(specialCharacter).append(")");
regexBuilder.append("]");
regexBuilder.append("{6,20}");
regexBuilder.append("$");
String input="z34-_";
String regex=regexBuilder.toString();
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(input); // 获取 matcher 对象
System.out.println(m.matches());
}
}