[비밀번호 작성규칙] 영문+숫자+특수기호 8자리 이상 및 ID 포함금지, 3자리 이상 연속하는 영문, 숫자(순방향/역방향) 체크 자바스크립트 > script

본문 바로가기
사이트 내 전체검색

script

[비밀번호 작성규칙] 영문+숫자+특수기호 8자리 이상 및 ID 포함금지, 3자리 이상 연속하는 영문, 숫자(순방향/역방향) 체…

페이지 정보

작성자 서방님 댓글 0건 조회 206회 작성일 19-07-24 09:32

본문

문화부 기준의 비밀번호 작성규칙에 적용하는 체크로직입니다.

외부에 돌아다니는 소스를 조금 수정하여 정리해 보았습니다.

 

<html>
<head>
<script type="text/javascript">

     var pw_passed = true;  // 추후 벨리데이션 처리시에 해당 인자값 확인을 위해

 

    function fn_pw_check() {
        var pw = document.getElementById("txtPassword1").value; //비밀번호
        var pw2 = document.getElementById("txtPassword2").value; // 확인 비밀번호
        var id = document.getElementById("txtId").value; // 아이디

 

        pw_passed = true;


        var pattern1 = /[0-9]/;
        var pattern2 = /[a-zA-Z]/;
        var pattern3 = /[~!@\#$%<>^&*]/;     // 원하는 특수문자 추가 제거
        var pw_msg = "";

 

        if(id.length == 0) {
               alert("아이디를 입력해주세요");
               return false;

              5.png?type=w2
         } else {
                //필요에따라 아이디 벨리데이션
         }

 

        if(pw.length == 0) {
               alert("비밀번호를 입력해주세요");
               return false;

              6.png?type=w2
         } else {
                if( pw  !=  pw2) {
                      alert("비밀번호가 일치하지 않습니다.");
                      return false;

                     7.png?type=w2
                 }
         }

 

       if(!pattern1.test(pw)||!pattern2.test(pw)||!pattern3.test(pw)||pw.length<8||pw.length>50){
            alert("영문+숫자+특수기호 8자리 이상으로 구성하여야 합니다.");
            return false;

           1.png?type=w2
        }          

        if(pw.indexOf(id) > -1) {
            alert("비밀번호는 ID를 포함할 수 없습니다.");
            return false;

           2.png?type=w2
        }

 

        var SamePass_0 = 0; //동일문자 카운트
        var SamePass_1 = 0; //연속성(+) 카운드
        var SamePass_2 = 0; //연속성(-) 카운드

 

        for(var i=0; i < pw.length; i++) {
             var chr_pass_0;
             var chr_pass_1;
             var chr_pass_2;
    
             if(i >= 2) {
                 chr_pass_0 = pw.charCodeAt(i-2);
                 chr_pass_1 = pw.charCodeAt(i-1);
                 chr_pass_2 = pw.charCodeAt(i);
                
                  //동일문자 카운트
                 if((chr_pass_0 == chr_pass_1) && (chr_pass_1 == chr_pass_2)) {
                    SamePass_0++;
                  }
                  else {
                   SamePass_0 = 0;
                   }

                  //연속성(+) 카운드
                 if(chr_pass_0 - chr_pass_1 == 1 && chr_pass_1 - chr_pass_2 == 1) {
                     SamePass_1++;
                  }
                  else {
                   SamePass_1 = 0;
                  }
         
                  //연속성(-) 카운드
                 if(chr_pass_0 - chr_pass_1 == -1 && chr_pass_1 - chr_pass_2 == -1) {
                     SamePass_2++;
                  }
                  else {
                   SamePass_2 = 0;
                  } 
             }    
             
            if(SamePass_0 > 0) {
               alert("동일문자를 3자 이상 연속 입력할 수 없습니다.");
               pw_passed=false;

              4.png?type=w2
             }

 

            if(SamePass_1 > 0 || SamePass_2 > 0 ) {
               alert("영문, 숫자는 3자 이상 연속 입력할 수 없습니다.");
               pw_passed=false;

              3.png?type=w2
             }
            
             if(!pw_passed) {            
                  return false;
                  break;
            }
        }
        return true;
    }
</script>
</head>
<body>
   아이디 :  <input type="text" id="txtId" /><br/>
   비밀번호 : <input type="password" id="txtPassword1" /><br/>
   비밀번호확인 : <input type="password" id="txtPassword2" /><br/>
   <a href="#" onclick="fn_pw_check()">확인</a>
</body>
</html>

댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
11
어제
58
최대
1,347
전체
153,775
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.