회원가입, 게시판 등에서 사용자의 입력값이 숫자로만 되어있는지 확인하기 위한 javascript 함수입니다
function isNumeric(num, opt){
// 좌우 trim(공백제거)을 해준다.
num = String(num).replace(/^\s+|\s+$/g, "");
if(typeof opt == "undefined" || opt == "1"){
// 모든 10진수 (부호 선택, 자릿수구분기호 선택, 소수점 선택)
var regex = /^[+\-]?(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+){1}(\.[0-9]+)?$/g;
}else if(opt == "2"){
// 부호 미사용, 자릿수구분기호 선택, 소수점 선택
var regex = /^(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+){1}(\.[0-9]+)?$/g;
}else if(opt == "3"){
// 부호 미사용, 자릿수구분기호 미사용, 소수점 선택
var regex = /^[0-9]+(\.[0-9]+)?$/g;
}else{
// only 숫자만(부호 미사용, 자릿수구분기호 미사용, 소수점 미사용)
var regex = /^[0-9]$/g;
}
if( regex.test(num) ){
num = num.replace(/,/g, "");
return isNaN(num) ? false : true;
}else{ return false; }
}
javascript 에서 제공하는 isNaN() 함수의 경우는 천단위 콤마나 소수점 등이 포함된 경우 이를 숫자가 아니라고 체크하여 false 를 리턴하게 되는데요, 위 함수는 1,000 또는 287.789 등의 입력값도 숫자로 인식하기 위한 함수 입니다
함수의 첫번째 인자인 num 은 사용자의 입력값이고, 두번째 인자인 opt 는 어떤 기호까지 숫자로 인식하느냐를 구분하는 인자입니다
isNumeric( "가1234나다5678다라" ) // false
isNumeric( "abc2212223" ) // false
isNumeric( "+1,234,567.722" ) // true
isNumeric( "+1,234,567.722", 2 ) // false
isNumeric( "1,234,567.722", 2 ) // true
isNumeric( "1,234,567.722", 3 ) // false
isNumeric( "1234500.722", 3 ) // true
isNumeric( "1234500.722", 4 ) // false
isNumeric( "1234500", 4 ) // true
위의 예에서 보듯이 호출시 opt에 따라 숫자로 인식되는 경우가 달라지게 됩니다
댓글 영역