[FE/JS] 주민등록번호 유효성체크

    728x90
    반응형

    2021.04.09

    16일차

     

    입사 33일차.

    회사를 상대로 하는 프로젝트에는 사업자번호, 법인번호, 주민등록번호의 유효성을 체크하는 자바스크립트가 있다.

    처음엔 NICE 같은 곳에서 API를 받아 비교하는 방법으로 진행하는 줄 알았으나, 실제로는 입력한 번호가 유효한지 체크하는 알고리즘이 있었다.

     

    이미, 인터넷에 유효성검사에 관한 코드들이 많기 때문에, 최대한 중복되지 않는 직접 만든 코드를 작성해보기로 했다.

     

     

     

    1. 주민등록번호 유효성체크

      ① 출처 : 모바일 개발 Blog's (링크)

      ② 출처로 가져온 블로그에는 Java의 주민등록번호 유효성 검사 코드가 있다.

      ③ 아래의 코드는 내가 직접 작성해본 코드다.

    // jumin1 = 주민번호 앞 6자리, jumin2 = 주민번호 뒷 7자리
    function fn_chkJuminNum(jumin1, jumin2) { // ex_ 123456 - 1234567

        // 정규식표현 (숫자만 입력가능)

        if ( jumin1.match('[^0-9]') ) {
            alert("주민등록번호는 숫자만 입력해주세요.");
            return false;

        }
        
        if ( jumin1.length != 6 ) {
            alert("생년월일은 YYMMDD 형식의 6자리로 입력해주세요.");
        }

        const keyArr = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5];  // 인증키 고정
        let step1 = 0;
       

        for ( int i = 0; i < jumin1.length; i++ ) {
            step1 += parseInt( jumin1.substring( i, i+1 ), 10 ) * keyArr[ i ];
        }

        for ( int j = jumin1.length; j < ( jumin.length + jumin2.length ) - 1; j++ ) {
            step1 += parseInt( jumin2.substring( j, j+1 ), 10 ) * keyArr[ j ];
        }


        const step2 = parseInt( jumin2.substring( 6, 7 ), 10 );
        const step3 = (11 - ( step1 % 11 ) ) % 10;

        if ( step 2 != step3 ) {
            alert("유효하지 않은 주민등록번호입니다.");
            $("#jumin1").val('');
            $("#jumin1").focus();

            return false;

        }
    }

    주민등록번호는 입력하지 않는 경우가 많고 외국인의 경우엔 또 다른 유효성 검사방법이 필요하기 때문에 효율적인 코드가 아니다.

    포폴에도 딱히 자랑할만한 기능은 아니기 때문에 나만의 보안코드를 만든다면 도움이 될 것 같다.

    728x90
    반응형

    댓글