//비밀번호 안전성 검사
var pwdValue = document.querySelector("[name='user_pwd']");
pwdValue.addEventListener("change", function(evt){
pwdValid = false;
var pwdValueNow = pwdValue.value;
var reg = {
blank:/[\s]/g,
lower : /[a-z]/g,
upper : /[A-Z]/g,
number :/[0-9]/g,
special : /[!@#$%^&*()]/g
}; //special 은 /W/g 입력하면 숫자,영문(대/소)을 제외한 모든 문자 의미 현재는 임의값 정해준것.
//공백있으면 바로 return
var blank=(pwdValueNow.match(reg['blank']) || []).length > 0 ? 1 : 0 ;
if(blank === 1){
pwdResult.innerHTML="<span style=\"color:red\">비밀번호에 공백은 입력할 수 없습니다.</span>";
return;
}
var number =(pwdValueNow.match(reg['number']) || []).length > 0 ? 1: 0;
// []은 null 값이 생기면 안되므로 추가한것, [] 은 length가 0이므로 0을 리턴
var lower =(pwdValueNow.match(reg['lower']) || []).length > 0 ? 1 : 0 ;
var upper =(pwdValueNow.match(reg['upper']) || []).length > 0 ? 1 : 0 ;
var special =(pwdValueNow.match(reg['special']) || []).length > 0 ? 1 : 0 ;
var pwdSum = number+lower+upper+special;
//연속성 검사
var SamePass_0 = 0; // 동일 문자 카운트
var SamePass_1 = 0; // 연속성(+) 카운트
var SamePass_2 = 0; // 연속성(-) 카운트
for(var i=0; i<pwdValueNow.length; i++){
var chr_pass_0 =pwdValueNow.charAt(i); //패스워드의 i번째 문자 선택
var chr_pass_1 =pwdValueNow.charAt(i+1);
var chr_pass_2 = pwdValueNow.charAt(i+2);
//동일 문자 카운트
if(chr_pass_0 == chr_pass_1 && chr_pass_1 == chr_pass_2){
SamePass_0 = SamePass_0 + 1;
}
//연속성(+) 카운트 , charCodeAt(n):n번째 자리의 아스키코드 값
if(chr_pass_1.charCodeAt(0) - chr_pass_0.charCodeAt(0) == 1 &&
chr_pass_2.charCodeAt(0) - chr_pass_1.charCodeAt(0) == 1){
SamePass_1 = SamePass_1 +1 ;
}
//연속성(-) 카운트
if(chr_pass_1.charCodeAt(0) - chr_pass_0.charCodeAt(0) == -1 &&
chr_pass_2.charCodeAt(0) - chr_pass_1.charCodeAt(0) == -1){
SamePass_2 = SamePass_2 +1 ;
}
}
// 숫자, 영어(소문자,대문자), 특수문자 총4단계
// 하나의 문자는 사용불가
if(pwdSum == 1) {
pwdResult.innerHTML="<span style=\"color:red\">
영문, 숫자,특수문자 중 2가지 이상을 혼합하여 주세요</span>";
return;
}
// 쉬움 : 2단계 (2개조합)
else if(pwdSum == 2){
pwdResult.innerHTML="<span style=\"color:#afaf07\">쉬움</span>";
pwdValid = true;
return;
}
// 안전 : 3단계 (3개조합 / 동일한 문자 반복 없음 )
else if(pwdSum == 3 && SamePass_0 < 1){
pwdResult.innerHTML="<span style=\"color:green\">안전</span>";
pwdValid = true;
return;
}
// 어려움 : 4단계 (4개 조합 / 동일한 문자 반복 , 연속성 없음 / 20자 미만)
else if(pwdSum == 4 && (SamePass_0 +SamePass_1 +SamePass_2) < 1 &&
pwdValueNow.length < 20)
{
pwdResult.innerHTML="<span style=\"color:navy\">어려움</span>";
pwdValid = true;
return;
}
// 최종판: 4단계 (4개 조합 / 동일한 문자 반복, 연속성 없음 / 20자)
else if(pwdSum == 4 && (SamePass_0 +SamePass_1 +SamePass_2) < 1 &&
pwdValueNow.length == 20){
pwdResult.innerHTML="<span style=\"color:purple\">매우어려움</span>";
pwdValid = true;
return;
}
});
'IT > JavaScript' 카테고리의 다른 글
정규표현식 - 아이디 체크 (0) | 2018.09.13 |
---|---|
javascript-32- UI vs API (0) | 2018.06.20 |
javascript-31- 라이브러리와 프레임워크 (0) | 2018.06.20 |
javascript -30- 파일로 쪼개서 정리정돈하기 (0) | 2018.06.20 |
javscript-29- 객체 활용 (0) | 2018.06.20 |