본문중에 주민등록번호 포함 여부 체크 #
주민번호 자리수 체크부분( isJuminno() )은 인터넷에서 구한 소스. 나머지는 제가 만든건데 오류가 있으면 연락바랍니다. kiki@hikiki.net
실행시켜보시려면 아래소스를 모두 긁어서 test.html 파일로 만들어서 브라우져에서 열어보면 됩니다.
<script> function containsJuminno(txt) { /* // 줄바꿈문자제거 var org = txt.replace(/[\n\r]/g, ""); // 하이픈(-) 제거 var org = org.replace(/([0-9])-([0-9])/g, "$1$2"); */ // 숫자만 남기고 모두 삭제 var org = txt.replace(/[^0-9]/g, ""); return checkJumin(org); } function checkJumin(org) { var v = org.replace(/^(.*)([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])(.*)$/, "$2-"); log("13자리패턴 매치 : "+v); if(v==org){ log("패턴못찾음"); return false; } v = v.replace(/^(.*)-$/, "$1"); var idx = org.indexOf(v); log("인덱스 : "+idx); if(idx<0){ log("패턴못찾음"); return false; } // 찾은 문자가 주민등록번호이면 return if(isJuminno(v)){ log("주민번호맞음"); return true; } else log("주민번호아님. 다음패턴찾기위해 recursive call"); // 다음 패턴을 찾기위해 찾은 주민번호에서 마지막자리 지움 org = org.substring(0, idx) + v.replace(/^(.*)[0-9]$/, "$1"); log("다음패턴찾기위해마지막글자삭제후 = "+org); return checkJumin(org); } function checkIt() { ta = document.getElementsByName("log")[0]; ta.value = ""; var rs = containsJuminno(document.getElementsByName("a")[0].value); log(rs); } function log(str) { ta = document.getElementsByName("log")[0]; ta.value = ta.value+"\n"+str; } function isJuminno(jumin) { jumin1 = jumin.substring(0, 6); jumin2 = jumin.substring(6); check = false; total = 0; temp = new Array(13); for(i=1; i<=6; i++) temp[i] = jumin1.charAt(i-1); for(i=7; i<=13; i++) temp[i] = jumin2.charAt(i-7); for(i=1; i<=12; i++){ k = i + 1; if(k >= 10) k = k % 10 + 2; total = total + temp[i] * k; } mm = temp[3] + temp[4]; dd = temp[5] + temp[6]; totalmod = total % 11; chd = 11 - totalmod; if(chd==temp[13] && mm<13 && dd<32 && (temp[7]==1 || temp[7]==2 || temp[7]==3 || temp[7]==4)) check=true; return check; } </script> <html> <body> <textarea name=a rows=5 cols=50>aa1234567890123123123adf </textarea> <input type=button onclick="checkIt()" value="XXXXXX"> <br> <textarea name=log rows=50 cols=90></textarea> </body> </html>