상세 컨텐츠

본문 제목

javascript 숫자만 입력, 입력값 숫자인지 체크하는 함수

카테고리 없음

by 동해둘리 2021. 4. 28. 14:56

본문

반응형

입력값이 숫자인지 확인하는 함수 

회원가입, 게시판 등에서 사용자의 입력값이 숫자로만 되어있는지 확인하기 위한 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에 따라 숫자로 인식되는 경우가 달라지게 됩니다

 

 

 

 

참고로 저 동해둘리가 직접 운영하는 '성공하는 중이다'  카페를 소개드립니다. 

각자의 분야에서 성공을 향해 가는 과정에서 힘이되는 이야기, 힘이되는 사진, 성공스토리, 실패스토리 등을 나누고자 합니다. 많은 참여 부탁드려요

 

https://cafe.naver.com/ingsuccess

 

 

성공하는 중이다 : 네이버 카페

성공을 위해 실패를 두려워하지 않는 분들의 이야기를 나누고 싶습니다. 우리는 성공하는 중이니까요!

cafe.naver.com

 

 

 

 

반응형

댓글 영역