내/외국인 주민등록번호 검증 로직 적용 / 정규식

이번에 외국인 사용자가 추가 되면서 유효성 검사를 새로 수정했다. 화면에서는 검증 로직을 반영해서 하드하게 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;
 	};
 
</div> </div> </div>

정규식

  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("주민등록번호가 올바르지 않습니다.");
  }