728x90
반응형
2021.04.08
15일차
입사 32일차.
회사를 상대로 하는 프로젝트에는 사업자번호, 법인번호, 주민등록번호의 유효성을 체크하는 자바스크립트가 있다.
처음엔 NICE 같은 곳에서 API를 받아 비교하는 방법으로 진행하는 줄 알았으나, 실제로는 입력한 번호가 유효한지 체크하는 알고리즘이 있었다.
이미, 인터넷에 유효성검사에 관한 코드들이 많기 때문에, 최대한 중복되지 않는 직접 만든 코드를 작성해보기로 했다.
1. 사업자번호 유효성체크
① 출처 : Hello World! (링크)
② 출처로 가져온 블로그에는 사업자번호 유효성체크의 알고리즘과 스크립트가 있다.
③ 아래의 코드는 내가 직접 작성해본 코드다.
// strBN = 문자열 파라미터 // 1번 방법 function fn_chkBusinessNum1( strBN ) { // strBN = 012-34-56789 if ( strBN.length == 10 ) { let chkStep1 = 0; const keyArr = [1, 3, 7, 1, 3, 7, 1, 3, 5]; // 인증키(고정) for (int i = 0; i < strBN.length - 1; i++) { // 사업자번호의 9자리까지 인증키와 자릿수같은 숫자끼리 곱한 뒤, 계속 더해준다. (ex_ (0*1) + (1*3) + ... chkStep1 += parseInt(strBN.subString( i, i+1 ), 10) * keyArr[ i ]; } // 9번째 자리의 숫자에 0.5를 곱한 뒤, 다시 더해준다. chkStep1 += Math.floor(parseInt(strBN.substring(8, 9), 10) * 5 / 10); } // '10 - (지금까지 더한 수의 나머지) == 사업자번호의 마지막 자릿수'가 같다면 성공 const chkStep2 = parseInt( StrBN.substring(9, 10), 10 ); if ( ( 10 - (chkStep1 % 10) ) != chkStep2 ) { alert("사업자번호가 유효하지 않습니다."); return false; } } // 2번 방법 function fn_chkBusinessNum2( strBN ) { // 012-34-56789 if ( strBN.length != 10 ) { alert("10자리를 입력해주세요."); return false; } let chkStep1 = 0; chkStep1 += parseInt(strBN.substring(0, 1), 10); chkStep1 += parseInt(strBN.substring(1, 2), 10) * 3 % 10; chkStep1 += parseInt(strBN.substring(2, 3), 10) * 7 % 10; chkStep1 += parseInt(strBN.substring(3, 4), 10) * 1 % 10; chkStep1 += parseInt(strBN.substring(4, 5), 10) * 3 % 10; chkStep1 += parseInt(strBN.substring(5, 6), 10) * 7 % 10; chkStep1 += parseInt(strBN.substring(6, 7), 10) * 1 % 10; chkStep1 += parseInt(strBN.substring(7, 8), 10) * 3 % 10; chkStep1 += parseInt(strBN.substring(8, 9), 10) * 5 % 10; chkStep1 += Math.floor(parseInt(strBN.substring(8, 9), 10) * 5 / 10); chkStep1 += parseInt(strBN.substring(9, 10), 10); if ( chkStep1 % 10 != 0 ) { alert("사업자번호가 유효하지 않습니다."); return false; } } |
728x90
반응형
'프론트엔드 > 자바스크립트' 카테고리의 다른 글
[FE/JS] fs module (0) | 2021.04.10 |
---|---|
[FE/JS] 주민등록번호 유효성체크 (0) | 2021.04.09 |
[FE/JS] JavaScript ES6 문법정리2 (0) | 2021.04.01 |
[FE/JS] form태그의 자동 Keyup 이벤트 (submit) 막기 (0) | 2021.03.26 |
[FE/JS] 프로그래스 바 div 태그로 만들기 (0) | 2021.03.25 |
댓글