주민번호 형식 : 123456-1234567

 

1. 정규식으로 숫자6자리, 대쉬, 숫자7자리 체크

2. 주민번호 체크 로직으로 체크

주민번호 첫자리부터 12번째 자리까지 순서대로 

2,3,4,5,6,7,8,9,2,3,4,5 를 한자리씩 곱해서 모두 더한다.

모두 더한값을 11로 나누어 나머지를 구한다.

11에서 나머지를 뺀 값이 주민번호의 마지막 번호와 같으면 유효하다.

ex) sum = 1*2 + 2*3 + 3*4 + 4*5 + 5*6 + 6*7 + 1*8 + 2*9 + 3*2 + 4*3 + 5*4 + 6*5 = 206

나머지 = 206 % 11 = 8

값 = 11 - 8 = 3

주민번호 마지막은 7이므로 유효하지 않음.

 

// 주민번호 체크
function isResidentRegNoValid(residentRegNo) {
	var re = /^[0-9]{6}-[0-9]{7}$/;
	if (!re.test(String(residentRegNo).toLowerCase())) {
		return false;
	}

	var regNos = residentRegNo.replace('-', '').split('');
	var checkNos = [2,3,4,5,6,7,8,9,2,3,4,5];
	var sum = 0;
	for (var i = 0; i < checkNos.length; i++) {
		sum = sum + (checkNos[i] * Number(regNos[i]));
	}
	return ((11 - (sum % 11)) % 10) == Number(regNos[12]);
}

 

 

 

 

 

 

 

select count(*) as cnt 
from (
select REGEXP_REPLACE(REPLACE('.'||'192.168.100.55', '.', '.00'), '([^.]{3}(\.|$))|.', '\1') as ip 
, REGEXP_REPLACE(REPLACE('.'||'192.168.100.51', '.', '.00'), '([^.]{3}(\.|$))|.', '\1') as ip_start
, REGEXP_REPLACE(REPLACE('.'||'192.168.100.56', '.', '.00'), '([^.]{3}(\.|$))|.', '\1') as ip_end
from dual
) where ip between ip_start and ip_end

 

이런 정규식을 ibatis에서 사용시 아래와 같은 에러가 났다.

 

 

org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];

또는

 

The error occurred while preparing the mapped statement for execution.  

 

토드나 쿼리창에서는 잘 돌아가는 쿼리인데..

곰곰히 생각해보니

문장을 맵핑해서 준비하는데 에러가 난다.... prepare statement 로 만드는데 에러가 난다는 말 같다.

 

이유는 간단하다.

ibatis에서는 #변수#, $변수$ 를 이용해서 변수를 맵핑한다.

정규식에 $가 들어가 있으니 에러가 난것이다.

 

해결법은.... 역시 간단하다.

$$를 두번 써주면 된다.

 

자바스크립트 정규식..

가끔 쓰게되는 정규식입니다.


// 이메일 체크 정규식

function isEmail(asValue) {

var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;

return regExp.test(asValue); // 형식에 맞는 경우 true 리턴

}


// 핸드폰 번호 체크 정규식

function isCelluar(asValue) {

var regExp = /^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$/;

return regExp.test(asValue); // 형식에 맞는 경우 true 리턴

}


비밀번호 체크 정규식

function isJobPassword(asValue) {

var regExp = /^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z]{8,10}$/; //  8 ~ 10자 영문, 숫자 조합

return regExp.test(asValue); // 형식에 맞는 경우 true 리턴

}





+ Recent posts