글 작성자: 써니루루

주민등록번호 체크 로직

1. 주민등록번호의 앞 6자리의 수에 처음부터 차례대로 2,3,4,5,6,7 을 곱한다. 그 다음, 뒤 7자리의 수에 마지막 자리만 제외하고 차례대로 8,9,2,3,4,5 를 곱한다.

2. 이렇게 곱한 각 자리의 수들을 모두 더한다.

3. 모두 더한 수를 11로 나눈 나머지를 구한다.

4. 이 나머지를 11에서 뺀다.

5. 이렇게 뺀 수가 두 자릿수이면, 즉 10보다 크면 다시 11로 나누어 나머지 값을 구한다.

6. 이렇게 해서 나온 최종 값을 주민등록번호의 마지막 자리 수와 비교해서 같으면 유효한 번호이고 다르면 잘못된 값이다.



아까 그거에 맞춰 제가 짜본 체크 함수 입니다.
오픈 소스 지향~~~ ^^


function isJuminValid(num)
 {
  if(isNaN(num) || num.length != 13) 
  {
   return false;
  } 

  var mm = num.charAt(2) + num.charAt(3);
  var dd = num.charAt(4) + num.charAt(5);

  if(parseInt(mm) == 0 || parseInt(mm) > 12)
  {
   return false;
  }

  if(parseInt(dd) == 0 || parseInt(dd) > 31)
  {
   return false;
  }

  if(parseInt(num.charAt(6)) == 0 || parseInt(num.charAt(6)) > 4)
  {
   return false;
  }

  var arrDivide = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5]; 
  var sum = 0;

  for(var i = 0; i < num.length - 1; i++)
  {  
    sum += parseInt(num.charAt(i)) * parseInt(arrDivide[i]); 
  }

  var mod = 11- (sum % 11);
  if(mod >= 10)
  {
   mod = mod % 11;
  }

  if(num.charAt(num.length - 1) != mod)
  {
   return false;
  }

  return true;
 }