JAVASCRIPT/JQUERY/AJAX

[javascript-jQuery] 비밀번호 유효성 체크

최고관리자
2018.01.09 09:56 66,886 14

본문

암호에는 최소한 하나의 숫자를 포함하여 8 자 이상이 포함되며 대문자와 특수 문자가 모두 포함됩니다 (예 : # ) ? , ! .

이전 암호이거나 사용자 이름, "password" 또는 "websitename" 포함 할 수 없습니다.

그리고 여기에는 하나의 대문자, 하나의 소문자, 하나의 숫자 또는 특수 문자를 포함하여 8 개의 문자에 대한 유효성 검증 표현식이 있습니다.

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

암호를 위해 쓸 수있는 방법은 하나의 대문자, 하나의 특수 문자 및 영숫자를 포함하여 8 자 여야합니다 .


최소 8 자, 최소 하나의 문자 및 하나의 숫자 :

"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"

최소 8 자, 최소 하나의 문자, 하나의 숫자 및 하나의 특수 문자 :

"^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$"

최소 8 자, 대문자 하나 이상, 소문자 하나 및 숫자 하나 :

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"

최소 8 자, 대문자 하나 이상, 소문자 하나, 숫자 하나 및 특수 문자 하나 이상 :

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}"

최소 8 자 및 최대 10 자, 대문자 하나 이상, 소문자 하나, 숫자 하나 및 특수 문자 하나 이상 :

"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,10}"




예제 1.


<script type="text/javascript">

function post_check()

{

 

 

 //HTML의 form name="boardWriteForm"

 //유효성체크하고 싶은 값의 id, name="content_pwd", maxlength="16"

 

  var UserPassword = document.boardWriteForm.content_pwd;

 

  if(UserPassword.value.length<8) {

    alert("비밀번호는 영문(대소문자구분),숫자,특수문자(~!@#$%^&*()-_? 만 허용)를 혼용하여 8~16자를 입력해주세요.");

    return false;

  }

  

  if(!UserPassword.value.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~,-])|([!,@,#,$,%,^,&,*,?,_,~,-].*[a-zA-Z0-9])/)) {

      alert("비밀번호는 영문(대소문자구분),숫자,특수문자(~!@#$%^&*()-_? 만 허용)를 혼용하여 8~16자를 입력해주세요.");

    return false;

  }

 

  return true;

}

</script>


출처 : http://ibulkamgodoldol.tistory.com/20



=====================================================================================



예제 2.

$.validator.addMethod("pw_pattern1", function(value, element) {
    return this.optional(element) || /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#$^])/i.test(value);
}, "비밀번호는 영문+숫자+특수문자 포함 9자리 이상이며, 특수문자는 !@#$%^만 지원됩니다.");
                
$.validator.addMethod("pw_pattern2", function(value, element) {
    return this.optional(element) || /^(?=[a-zA-Z0-9!@#$^]*$)(?!.*[^a-zA-Z0-9!@#$^])/i.test(value);
}, "비밀번호는 영문+숫자+특수문자 포함 9자리 이상이며, 특수문자는 !@#$%^만 지원됩니다.");

일부 Jquery 가 사용되었지만 javascript로 변환해서 사용가능한 부분


/^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#$^])/i


해당 글자 하나 이상 반드시 포함


/^(?=[a-zA-Z0-9!@#$^]*$)(?!.*[^a-zA-Z0-9!@#$^])/i


해당글자 외에 다른 문자 허용 안함


출처 : http://www.daybyplace.com/m/327



=====================================================================================



예제 3.


function passwordCheck() {


var userID = document.getElementById("userID").value;

var password = document.getElementById("password").value;

var newPassword1 = document.getElementById("newPassword1").value;

var newPassword2 = document.getElementById("newPassword2").value;


// 재입력 일치 여부

if (newPassword1 != newPassword2) {

alert("입력한 두 개의 비밀번호가 서로  일치하지 않습니다.");

return false;

}


// 길이

if(!/^[a-zA-Z0-9!@#$%^&*()?_~]{6,15}$/.test(newPassword1)) { 

alert("비밀번호는 숫자, 영문, 특수문자 조합으로 6~15자리를 사용해야 합니다."); 

return false;

}


// 영문, 숫자, 특수문자 2종 이상 혼용

var chk = 0;

if(newPassword1.search(/[0-9]/g) != -1 ) chk ++;

if(newPassword1.search(/[a-z]/ig)  != -1 ) chk ++;

if(newPassword1.search(/[!@#$%^&*()?_~]/g)  != -1  ) chk ++;

if(chk < 2)

alert("비밀번호는 숫자, 영문, 특수문자를 두가지이상 혼용하여야 합니다."); 

return false;

}


// 동일한 문자/숫자 4이상, 연속된 문자

if(/(\w)\1\1\1/.test(newPassword1) || isContinuedValue(newPassword1)) {

alert("비밀번호에 4자 이상의 연속 또는 반복 문자 및 숫자를 사용하실 수 없습니다."); 

return false;

}


// 아이디 포함 여부

if(newPassword1.search(userID)>-1) {

alert("ID가 포함된 비밀번호는 사용하실 수 없습니다."); 

return false;

}


// 기존 비밀번호와 새 비밀번호 일치 여부

if (password == newPassword2) {

alert("기존 비밀본호와 새 비밀번호가 일치합니다.");

return false;

}


alert("테스트 통과!");


}


function isContinuedValue(value) {

console.log("value = " + value);

var intCnt1 = 0;

var intCnt2 = 0;

var temp0 = "";

var temp1 = "";

var temp2 = "";

var temp3 = "";


for (var i = 0; i < value.length-3; i++) {

console.log("=========================");

temp0 = value.charAt(i);

temp1 = value.charAt(i + 1);

temp2 = value.charAt(i + 2);

temp3 = value.charAt(i + 3);


console.log(temp0)

console.log(temp1)

console.log(temp2)

console.log(temp3)


if (temp0.charCodeAt(0) - temp1.charCodeAt(0) == 1

&& temp1.charCodeAt(0) - temp2.charCodeAt(0) == 1

&& temp2.charCodeAt(0) - temp3.charCodeAt(0) == 1) {

intCnt1 = intCnt1 + 1;

}


if (temp0.charCodeAt(0) - temp1.charCodeAt(0) == -1

&& temp1.charCodeAt(0) - temp2.charCodeAt(0) == -1

&& temp2.charCodeAt(0) - temp3.charCodeAt(0) == -1) {

intCnt2 = intCnt2 + 1;

}

console.log("=========================");

}


console.log(intCnt1 > 0 || intCnt2 > 0);

return (intCnt1 > 0 || intCnt2 > 0);

}


출처 : http://godlvkhj.tistory.com/130

댓글목록 14

등록된 댓글이 없습니다.