Java 정규표현식으로 문자, 숫자, 특수문자의 조합 패턴 체크
package test;
public class passwordvalidation {
public passwordvalidation() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) throws Exception {
String passwd = "TEST1#$@";
String dLginId = "userid";
if(passwd.indexOf("\'") != -1){
System.out.println("\' 포함할수없습니다.");
}
if(passwd.indexOf("\"") != -1){
System.out.println("\" 포함할수없습니다.");
}
if(passwd.indexOf("\\") != -1){
System.out.println("\\ 포함할수없습니다.");
}
if(passwd.indexOf("|") != -1){
System.out.println("| 포함할수없습니다.");
}
// 영문+숫자+특수문자 조합
if (digitCheck(passwd) < 3) {
System.out.println("영문+숫자+특수문자 조합으로 입력해주세요.");
}
//아이디 포함 여부
if(passwd.indexOf(dLginId) != -1){
System.out.println("패스워드에 아이디가 포함되어있습니다.");
}
//중복된 3자 이상의 문자 또는 숫자 사용불가
if (checkDuplicate3Character(passwd)) {
System.out.println("중복된 3자 이상의 문자 사용불가입니다.");
}
}
public static boolean checkDuplicate3Character(String d) {
int p = d.length();
byte[] b = d.getBytes();
for (int i = 0; i < ((p * 2) / 3); i++) {
int b1 = b[i + 1];
int b2 = b[i + 2];
if ((b[i] == b1) && (b[i] == b2)) {
return true;
} else {
continue;
}
}
return false;
}
public static int digitCheck(String passwd) {
int varDigit = 0;
int varAlpha = 0;
int varHex = 0;
int varSum = 0;
for (int i = 0; i < passwd.length(); i++) { char index = passwd.charAt(i); if (index >= '0' && index <= '9') { varDigit = 1; } else if ( (index >= 'a' && index <= 'z') || (index >= 'A' && index <= 'Z') ) {
varAlpha = 1;
} else if (index == '!' || index == '@' || index == '$'
|| index == '%' || index == '^' || index == '&'
|| index == '*') {
varHex = 1;
}
}
varSum = varDigit + varAlpha + varHex;
return varSum;
}
}