ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 주민번호 체크 및 사업자번호 체크 루틴
    개발 2011. 2. 15. 16:07
    // 주민등록 번호가 유효한지 체크한다.
    function isValidJuminNo(juminno) {
          if(juminno=="" || juminno==null || juminno.length!=13) {
            alert("주민등록번호를 적어주세요.");
            return false;
          }
         
          var jumin1 = juminno.substr(0,6);
          var jumin2 = juminno.substr(6,7);
          var yy     = jumin1.substr(0,2);        // 년도
          var mm     = jumin1.substr(2,2);        // 월
          var dd     = jumin1.substr(4,2);        // 일
          var genda  = jumin2.substr(0,1);        // 성별
          var msg, ss, cc;

          // 숫자가 아닌 것을 입력한 경우
          if (!isNumeric(jumin1)) {
            alert("주민등록번호 앞자리를 숫자로 입력하세요.");
            return false;
          }
         
          // 길이가 6이 아닌 경우
          if (jumin1.length != 6) {
            alert("주민등록번호 앞자리를 다시 입력하세요.");
            return false;
          }
         
          // 첫번째 자료에서 연월일(YYMMDD) 형식 중 기본 구성 검사
          if (yy < "00" || yy > "99" || mm < "01" || mm > "12" || dd < "01" || dd > "31") {
                alert("주민등록번호 앞자리를 다시 입력하세요.");
                return false;
              }
         
          // 숫자가 아닌 것을 입력한 경우
          if (!isNumeric(jumin2)) {
            alert("주민등록번호 뒷자리를 숫자로 입력하세요.");
            return false;
          }

          // 길이가 7이 아닌 경우
          if (jumin2.length != 7) {
            alert("주민등록번호 뒷자리를 다시 입력하세요.");
            return false;
          }
         
          // 성별부분이 1 ~ 4 가 아닌 경우
          if (genda < "1" || genda > "4") {
            alert("주민등록번호 뒷자리를 다시 입력하세요.");
            return false;
          }
         
          // 연도 계산 - 1 또는 2: 1900년대, 3 또는 4: 2000년대
          cc = (genda == "1" || genda == "2") ? "19" : "20";
          // 첫번째 자료에서 연월일(YYMMDD) 형식 중 날짜 형식 검사
          if (isValidDate(cc+yy+mm+dd) == false) {
            alert("주민등록번호 앞자리를 다시 입력하세요.");
            return false;
          }
         
          // Check Digit 검사
          if (!isSSN(jumin1, jumin2)) {
            alert("입력한 주민등록번호를 검토한 후, 다시 입력하세요.");
            return false;
          }

          return true;
        }

    function isValidDate(iDate) {
          if( iDate.length != 8 ) {
            return false;
          }
          return true;
        }

    function isNumeric(s) {
          for (i=0; i<s.length; i++) {
            c = s.substr(i, 1);
            if (c < "0" || c > "9") return false;
          }
          return true;
        }

         

        function isSSN(s1, s2) {
          n = 2;
          sum = 0;
          for (i=0; i<s1.length; i++)
            sum += parseInt(s1.substr(i, 1), 10) * n++;
          for (i=0; i<s2.length-1; i++) {
            sum += parseInt(s2.substr(i, 1), 10) * n++;
            if (n == 10) n = 2;
          }
         
          c = 11 - sum % 11;
          if (c == 11) c = 1;
          if (c == 10) c = 0;
          if (c != parseInt(s2.substr(6, 1), 10)) return false;
          else return true;
        }

    // 사업자번호 체크
    function checkCompanyNumber(strNumb){
        if(strNumb.length != 10){
            alert('사업자 등록번호가 잘못되었습니다.');
            return false;
        }
        var sumMod = 0;
        sumMod += parseInt(strNumb.substring(0, 1), 10);
        sumMod += parseInt(strNumb.substring(1, 2), 10) * 3 % 10;
        sumMod += parseInt(strNumb.substring(2, 3), 10) * 7 % 10;
        sumMod += parseInt(strNumb.substring(3, 4), 10) * 1 % 10;
        sumMod += parseInt(strNumb.substring(4, 5), 10) * 3 % 10;
        sumMod += parseInt(strNumb.substring(5, 6), 10) * 7 % 10;
        sumMod += parseInt(strNumb.substring(6, 7), 10) * 1 % 10;
        sumMod += parseInt(strNumb.substring(7, 8), 10) * 3 % 10;
        sumMod += Math.floor(parseInt(strNumb.substring(8, 9), 10) * 5 / 10);
        sumMod += parseInt(strNumb.substring(8, 9), 10) * 5 % 10;
        sumMod += parseInt(strNumb.substring(9, 10), 10);
        if(sumMod % 10 != 0){
            alert('사업자등록번호가 잘못되었습니다.');
            return false;
        }
        return true;
    }

    반응형

    댓글

Designed by Tistory.