Javascript/코드 모음
[JAVASCRIPT] 비밀번호 유효성 검사
브루트포스
2019. 12. 9. 23:16
순수 자바스크립트이며, 지속적으로 추가/확장됩니다.
기본 기능 설명 ( ES5 )
- 최소/최대 문자 입력 범위 ( 9~16 자리의 입력 체크 )
- 같은 숫자 연속 금지 ( 3자리를 기준으로, ex: pwd111(X), pwd11d(O) )
- 순차적 숫자 금지 ( ex : 123456 )
- 알파벳 순 문자 금지 ( ex : abcde )
실제 코드
function passwordValidator(args, opt) {
// v1.0
var obj = opt || { // options의 기본 값들입니다.
min: 9, max: 16, conseq: 5, special: true,
msg: '숫자와 영문자,특수문자 조합으로 9~16자리를 사용해야 합니다.',
}
var specialChar = opt.special ? '(?=.*[!@#$%^*+=-])' : '';
var rules = new RegExp("^(?=.*[a-zA-Z])"+specialChar+
"(?=.*[0-9]).{" + obj.min + "," + obj.max + "}$");
if (!rules.test(args)) {
console.log(opt.msg);
return false;
}
if(!checkSequential(args, obj)) return false; // 필요없을 경우 주석하세요
return true;
}
function checkSequential(s, obj) { // 순차적 숫자, 알파벳, 동일한 숫자 체크 함수
// Check for sequential numerical characters
for(var i in s)
if (+s[+i+1] == +s[i]+1 &&
+s[+i+2] == +s[i]+2) return false;
// Check for sequential alphabetical characters
for(var i in s)
if (String.fromCharCode(s.charCodeAt(i)+1) == s[+i+1] &&
String.fromCharCode(s.charCodeAt(i)+2) == s[+i+2]) return false;
// check for consecutive numbers
var count = 0;
for(var i = 0; i < s.length; ++i)
{
if(s[i] === s[i+1]) count++;
else count = 0;
if(count >= obj.conseq - 1) return false;
}
return true;
}
//사용법
var options = {
min:9, max:16, // 최소/최대 입력 범위 ( 9 ~ 16자리 )
conseq:5, // 최대 연속 숫자 입력 ( ex: pwd22222 )
special: true, // 특수문자 포함여부 (true일경우 반드시 포함하여야 함)
msg: 'test message' // 실패할 경우의 출력 메시지 (ex : 비밀번호가 유효하지 않습니다..등 )
}
passwordValidator([String:검사할 문자열],[Object:옵션]);
*테스트 *
위 콘솔 로그의 각 라인 의미 : 실제 입력된 문자열 : 예상하는 리턴값 => 실제 리턴값