내/외국인 주민등록번호 검증 로직 적용 / 정규식
February 01, 2018
이번에 외국인 사용자가 추가 되면서 유효성 검사를 새로 수정했다. 화면에서는 검증 로직을 반영해서 하드하게 validation체크를 하고 서버단에서는 정규식을 이용해서 숫자만 체크할 수 있도록 했다.
##javascript
CODE <div class="collapse_wrapper"> <div class="collapse" id="basic"> <div class="card">
var validatePersonalNo = function(personalNo) {
var strXxx = "234567892345";
var intMagicKey = 11;
var intModeNum = 11;
var intKey = 0;
if (personalNo.length != 13) return false;
for (var i = 0; i < strXxx.length; i++) {
intKey += parseInt(personalNo.charAt(i)) * parseInt(strXxx.charAt(i));
}
if("5678".match(personalNo.charAt(6))){
//외국인일 경우 13
intMagicKey = 13;
}
intKey = intMagicKey - (intKey % intModeNum);
if(intKey > 9){
intKey-=10;
}
return (intKey == personalNo.charAt(12)) ? true : false;
};
정규식
if(!personalNo.matches("^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-?[1-6][0-9]{6}$")){ throw new **exception("주민등록번호가 올바르지 않습니다."); }