본문 바로가기
IT-개발,DB

[개발/javascript] 주민번호검증하기

by SB리치퍼슨 2014. 12. 30.





주민번호검증하기2

- charCodeAt() : 해당인덱스에 해당하는 문자의 ascii코드값을 반환합니다.
- substring(x, y) : 인덱스[x]값에서부터 인덱스[y]값이전까지의 문자열을 반환합니다.



* 주민등록번호의 공식
주민등록번호의 13자리로 이루어져 있습니다.
- 처리1 : [첫번째번호*2] + [두번째번호*3] + [세번째번호*4] + [네번째번호*5] + [다섯번째번호*6]
    + [여섯번째번호*7] + [일곱번째번호*8] + [여덟번째번호*9] + [아홉번째번호*2] + [열번째번호*3]
    + [열한번째번호*4] + [열두번째번호*5]의 합
- 처리2 : [처리1값] % 11
- 처리3 : [[처리1값] - [처리2값]] + 11 - [처리1값]
- 처리4 : [처리3값] % 10
- 처리5 : [처리3값] - [[처리3값] - [처리4값]]





----------------------------------------------------------------------------------------



<html>
<script language="JavaScript">
<!--



function name_check(ch_name) {  /* 이름체크 */
var len = ch_name.length;



if (len < 2) {  /* 이름은 두자이상 */
  alert("이름이 잘못되었습니다.");
  frm1.myname.focus();
  return false;
}



for (i=0; i<len; i++) {
  var mycode = ch_name.charCodeAt(i);  /* 해당인덱스 문자의 ascii코드값 */



  if (mycode < 128) {  /* 128이상은 한글 */
   alert("한글 이름으로 입력하세요");
   frm1.myname.focus();
   return false;
  }
}


return true;
}



function jumin_check(ssn_jumin) {  /* 주민번호 확인 */
var ssn_num = new Array();
var ssn_jumin1 = new String(ssn_jumin);  /* 입력된 숫자의 문자열화 */



if (ssn_jumin1.length != 13) {
  alert("주민등록번호 13자리인지를 확인하여 주십시오");
  frm1.jumin1.focus();
  return false;
}



for (var i=0; i<=12; i++)
  ssn_num[i] = ssn_jumin1.substring(i, i+1);  /* [i]에서 [i+1]까지 문자를 추출 */



/* 주민등록번호 공식의 시작 */
var sum = 2*ssn_num[0] + 3*ssn_num[1] + 4*ssn_num[2] + 5*ssn_num[3];
sum += 6*ssn_num[4] + 7*ssn_num[5] + 8*ssn_num[6] + 9*ssn_num[7];
sum += 2*ssn_num[8] + 3*ssn_num[9] + 4*ssn_num[10] + 5*ssn_num[11];

var r1 = sum % 11;
var temp = (sum-r1) + 11 - sum;
var r2 = temp % 10;
var temp1 = temp - (temp-r2);
/* 주민등록번호 공식의 끝 */



if (ssn_num[12] != temp1) {  /* 해당 주민번호를 검증 */
  alert("올바른 주민등록번호가 아닙니다.");
  return false;
}



return true;
}



function frm_check() {  /* 각 함수를 호출/확인한다. */
var jumin_name = frm1.myname.value;
var jumin_num = frm1.jumin1.value + frm1.jumin2.value;



if (name_check(jumin_name) == false)
  return false;

if (jumin_check(jumin_num) == false)
  return false;

}



-->
</script>



<body onload="frm1.myname.focus();">
<table border=1 cellpadding=5 cellspacing=2 bordercolor="#bbddaa">
<form name="frm1" onsubmit="return frm_check()">



<tr>
<td bgcolor="#aacc99" align="center">이 름</td>
<td bgcolor="#cceebb"><input type="text" name="myname" maxlength=10 size=10></td>
</tr>
<tr>
<td bgcolor="#aacc99">주민등록번호</td>
<td bgcolor="#cceebb">
  <input type="text" name="jumin1" maxlength=6 size=6>-
  <input type="text" name="jumin2" maxlength=7 size=7>
</td>
</tr>
<tr>
<td colspan=2 align="center">
  <input type="submit" value=" 확인 ">
</td>
</tr>



</form>
</table>
</body>
</html>


출처: 인터넷

반응형

댓글