금요일, 1월 17, 2025
HomeLanguageJava 정규표현식으로 문자, 숫자, 특수문자의 조합 패턴 체크

Java 정규표현식으로 문자, 숫자, 특수문자의 조합 패턴 체크

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;
	}
}

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular