주민등록번호 체계 및 유효성 검사 (javascript)

2016. 10. 7. 15:31·Programing/Algorithm
반응형

 

ABCDEF - GHIJKLM

주민등록번호는 위와 같이 13자리로 구성되어 있다. 각 구성을 알아보자.

 

 

ABCDEF

 : 생년월일

 

G: 성별을 나타낸다.생년월일의 년도가 2자리만 표기가 되기때문에 A에서 자세히 구분할수 있다.

  • 1: 1900년대에 출생한 남자
  • 2: 1900년대에 출생한 여자
  • 3: 2000년대에 출생한 남자
  • 4: 2000년대에 출생한 여자
  • 5: 1900년대에 출생한 외국인 남자
  • 6: 1900년대에 출생한 외국인 여자
  • 7: 2000년대에 출생한 외국인 남자
  • 8: 2000년대에 출생한 외국인 여자
  • 9: 1800년대에 출생한 남자
  • 0: 1800년대에 출생한 여자
 
HIJK: 출생신고를 한 지역 코드이며 아래와 같은 형식을 가지고 있다.
  • H: 지역 
  • I: 시.군.구
  • J: 동.읍.면
  • K: 통.반.리
HI는 출생등록지에 해당하는 지방자치단체의 고유번호이다.
JK는 출생등록을 한 읍.면.동주민센터 고유 번호로, 주민센터마다 고유한 번호가 행정자치부에 의해 부여되어 있다.
 
L: 해당지역에서 출생신고를 한 당일의 접수 순번을 나타낸다.
(이 숫자는 1부터 시작되며, 통계상 보통 5를 넘지 않는다고 한다.)
 
M: 검증번호로 앞의 12자리를 가지고 특정한 공식으로 산출한 숫자를 적는다.
공식: M = (11 - ((2×A + 3×B + 4×C + 5×D + 6×E + 7×F + 8×G + 9×H + 2×I + 3×J + 4×K + 5×L) % 11)) % 10
소괄호 안에 잇는것을 계산한 값을 11로 나누어 나온 나머지를 11에서 뺀 값이다. 단, 10은 0, 11은 1로 표기한다.
 
function ssnCheck(_ssn1, _ssn2)
{
    var ssn1    = _ssn1,
        ssn2    = _ssn2,
        ssn     = ssn1+''+ssn2,
        arr_ssn = [],
        compare = [2,3,4,5,6,7,8,9,2,3,4,5],
        sum     = 0;

    // 입력여부 체크
    if (ssn1 == '')
    {
        alert('주민등록번호를 기입해주세요.');
        return false;
    }

    if (ssn2 == '')
    {
        alert('주민등록번호를 기입해주세요.');
        return false;
    }    

    // 입력값 체크
    if (ssn1.match('[^0-9]'))
    {
        alert("주민등록번호는 숫자만 입력하셔야 합니다."); 
        return false; 
    }
    if (ssn2.match('[^0-9]'))
    {
        alert("주민등록번호는 숫자만 입력하셔야 합니다."); 
        return false; 
    }

    // 자리수 체크
    if (ssn.length != 13)
    {
        alert("올바른 주민등록 번호를 입력하여 주세요.");return false;
    }    


    // 공식: M = (11 - ((2×A + 3×B + 4×C + 5×D + 6×E + 7×F + 8×G + 9×H + 2×I + 3×J + 4×K + 5×L) % 11)) % 10
    for (var i = 0; i<13; i++) 
    { 
        arr_ssn[i] = ssn.substring(i,i+1); 
    }
    
    for (var i = 0; i<12; i++)
    {
        sum = sum + (arr_ssn[i] * compare[i]); 
    }

    sum = (11 - (sum % 11)) % 10;
    
    if (sum != arr_ssn[12])
    { 
        alert("올바른 주민등록 번호를 입력하여 주세요.");
        return false; 
    }

    return true;
}

ssnCheck('830422', '1185600');

 

반응형
저작자표시 비영리 동일조건 (새창열림)

'Programing > Algorithm' 카테고리의 다른 글

jvascript array 경우의 수 구하기 (permute)  (0) 2022.02.15
LRU Cache (Least Recently Used) / 프로그래머스 캐시  (0) 2022.01.19
콜라츠 추측  (0) 2021.08.27
하샤드의 수 (Harshad Number)  (0) 2021.08.25
덧셈 뺄셈 동적 계산 (dynamic plus minus, Dynamic addition and subtraction)  (0) 2019.07.19
퀵 정렬(Quick Sort) (javascript)  (0) 2016.05.31
재귀 함수를 이용한 거듭제곱 (a의 n승) (javascript)  (0) 2016.05.18
에라토스테네스의 체를 이용한 소수 찾기  (0) 2016.05.17
'Programing/Algorithm' 카테고리의 다른 글
  • 하샤드의 수 (Harshad Number)
  • 덧셈 뺄셈 동적 계산 (dynamic plus minus, Dynamic addition and subtraction)
  • 퀵 정렬(Quick Sort) (javascript)
  • 재귀 함수를 이용한 거듭제곱 (a의 n승) (javascript)
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (437) N
      • 금융 (55) N
      • Programing (268) N
        • Algorithm (28)
        • API (2)
        • javascript (121)
        • CSS (6)
        • HTML (10)
        • PHP (15) N
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (17)
        • MS-SQL (1)
        • MySQL (12)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (5)
      • IT 일반 (15)
      • 리뷰 (36)
        • Book (17)
        • 제품 (1)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (31) N
        • 회고 (2) N
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    SQL
    블로그
    사고 싶은 책
    js패턴
    자바스크립트
    디자인패턴
    jsp
    JavaScript
    It
    IT·컴퓨터
    IT블로그
    기초
    IT 관련
    php
    자바
    자바스크립트유틸
    읽고 싶은 책
    iT's MY LiFE
    Java
    위시리스트
  • hELLO· Designed By정상우.v4.10.3
Dongkkase
주민등록번호 체계 및 유효성 검사 (javascript)
상단으로

티스토리툴바