JavaScript에서 주민등록번호 유효성 검사 방법에 대해 알아보겠습니다.
주민등록번호란
주민등록번호는 “주민의 거주관계를 파악하고 상시로 인구의 동태를 명확히 하여 행정사무의 적정하고 간이 한 처리를 도모함”(1962년 주민등록법) 등을 목적으로 만든 일련번호로서, 개개인의 신원을 명확하게 구분하는 역할을 한다.
나무위키
내국인과 외국인 주민등록번호 유효성을 검사하는 소스코드입니다.
- 내국인 주민등록번호와 달리 외국인 등록번호는 뒤 7자리 숫자의 첫 숫자가 2000년 이전 출생 외국인에게는 남자는 5, 여자는 6, 2000년 이후 출생 외국인에게는 남자는 7, 여자는 8로 부여하고 있습니다.
- 내국인 주민등록번호 숫자는 1, 2, 3, 4 로 시작됩니다.
1 2 3 4 5 6 7 8 9 10 11 12
| <!DOCTYPE html> <html> <body> <label class="font-weight-bold">주민등록번호 입력 :</label> <div class="d-flex align-items-center"> <input type="text" class="form-control" id="jumin1" required /> <span class="font-weight-bold mx-2">-</span> <input type="password" class="form-control" id="jumin2" required /> </div> <button type="button" onclick="validate()">검증</button> </body> </html>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| const CommonUtil = (function () { const validRegistrationNumber = function (rn, type) { rn = rn.split('-').join(''); if (rn.length !== 13) return false;
let checkSum = 0; for (let i = 0; i < 12; i++) { checkSum += (rn.substr(i, 1) >> 0) * ((i % 8) + 2); }
const korMatch = (11 - (checkSum % 11)) % 10 == rn.substr(12, 1); const frnMatch = (13 - (checkSum % 11)) % 10 == rn.substr(12, 1);
if (type === 'local') return korMatch; else if (type === 'foreigner') return frnMatch; else return korMatch || frnMatch; };
return { validateJumin: function (ssn1, ssn2) { const ssnType = ssn2.substr(0, 1); const rn = ssn1 + ssn2;
if (ssnType == '5' || ssnType == '6' || ssnType == '7' || ssnType == '8') { const type = 'foreigner'; } else { const type = 'local'; }
return validRegistrationNumber(rn, type); }, }; })();
document.addEventListener('DOMContentLoaded', function () { function validate() { const jumin1 = document.getElementById('jumin1'); const jumin2 = document.getElementById('jumin2');
const ssn1 = jumin1.value; const ssn2 = jumin2.value;
return CommonUtil.validateJumin(ssn1, ssn2); } });
|