[javascript-jQuery] 비밀번호 유효성 체크
본문
암호에는 최소한 하나의 숫자를 포함하여 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.
일부 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);
}
댓글목록 14