[JavaScript] 주민등록번호 유효성 검사

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 {
// 주민등록번호가 내국민인지 외국인인지 분류
// 뒤 7자리의 첫번째 숫자가 1,2,3,4 일경우 내국인 / 5,6,7,8 일경우 외국인
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);
}
});
Share