본문 바로가기
  • A space that records me :)
Language/JS,JQuery

[JS/JQuery] 비밀번호 생성규칙 검사 함수

by yjkim_97 2021. 11. 14.

// 비밀번호 유효성 체크
// 특수문자+영문+숫자 혼합
function chkPW(id, pw){

	if(pw == null || pw == undefined)
	{
		kbnAlert("비밀번호를 입력해 주시기 바랍니다.");
		return false;
	}
	// !/^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$/.test(pw)
	var num = pw.search(/[0-9]/g);
	var eng = pw.search(/[a-z]/ig);
	var spe = pw.search(/[`~!@@#$%^&*|₩₩₩'₩";:₩/?]/gi);

	// 영문, 숫자, 특수문자 혼합, 8자 이상
	if(num < 0 || eng < 0 || spe < 0 || pw.length < 8 || pw.length > 11){
		kbnAlert("비밀번호는 영문,숫자,특수문자를 혼합한 8자리 이상이어야 합니다.");
		return false;
	}
	// 공백,ID 미포함
	else if((pw.search(/\s/) != -1) || (pw.indexOf(id) != -1)){
		kbnAlert("비밀번호에 공백,ID를 포함할 수 없습니다.");
		return false;
	}
	// 같은 문자/숫자 4번이상 반복 안됨
	else if(/(\w)\1\1\1/.test(pw))
	{
		kbnAlert("비밀번호에 같은 문자/숫자를 4번 이상 포함할 수 없습니다.");
		return false;
	}
	// 연속된 숫자 4번이상 안됨
	else if(/(0123)|(1234)|(2345)|(3456)|(4567)|(5678)|(6789)|(7890)/.test(pw)){
	    kbnAlert('비밀번호에 4회이상의 연속된 숫자를 사용할 수 없습니다.');
	    return false;
	}

	return true;
}