티스토리 뷰
지난 시간에는 숫자 체크에 대해 알아보았습니다. 아래 링크에서 확인하세요.
2016/04/10 - [개발/javascript,jQuery] - [javascript] 숫자 체크 (isNaN, jQuery.isNumeric, 정규식)
이번 시간에는 숫자에 3자리마다(천 단위) 자릿수 구분 콤마(,)를 넣어보도록 합시다.
그냥 숫자의 자릿수 구분을 넣는게 아니고, 지난 시간에 숫자체크를 해봤으니까 입력된 값이 숫자일 경우에만 세자리마다 자릿수 구분 콤마를 넣도록 합시다.
formatNumber( value ) 에서 value가 숫자이면 3자리마다 자릿수 구분 콤마(,)를 넣고, 숫자가 아니라면 원래 값을 그대로 반환합니다.
굳이 값을 체크해서 숫자일 경우에 자릿수 구분값을 넣을 필요가 없습니다.
또 해당값을 숫자로 변환하려면 getNumeric( value ) 로 하면 자릿수 구분이 없는 순수 숫자로 변환된 값을 받을 수 있습니다.
이전 시간에 설명드린것처럼 isNumeric( value ) 하면 숫자인지 체크할 수 있습니다.
getNumeric(value, opt) isNumeric(value, opt) formatNumber(value, opt) 에서 opt는 안넣어도 되며 아래 설명을 참고하세요.
opt=1 또는 안넣으면 모든 10진수와 자릿수 구분기호가 있는 숫자도 숫자로 인식함.
opt=2 는 플러스/마이너스 부호가 있으면 숫자로 인식 안함.
opt=3 는 플러스/마이너스 부호, 자릿수 구분 기호가 있으면 숫자로 인식 안함.
opt=4 는 숫자로만 구성된 경우에만 숫자로 인식
function isNumeric(num, opt){ num = String(num).replace(/^\s+|\s+$/g, ""); if(typeof opt == "undefined" || opt == "1"){ 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{ var regex = /^[0-9]$/g; } if( regex.test(num) ){ num = num.replace(/,/g, ""); return isNaN(num) ? false : true; }else{ return false; } } function getNumeric(str, opt){ if(isNumeric(str, opt)){ str = String(str).replace(/^\s+|\s+$/g, "").replace(/,/g, ""); return Number(str); }else{ return str; } } function formatNumber(str, opt){ var rstr = "", sign = ""; if(isNumeric(str, opt)){ str = String(getNumeric(str, opt)); if(str.substr(0, 1) == "-" ){ sign = "-"; str = str.substr(1); } var arr = str.split("."); for(var ii = 0 ; ii < arr[0].length ; ii++){ if( ii % 3 == 0 && ii > 0){ rstr = arr[0].substring(arr[0].length-ii,arr[0].length-ii-1) + "," + rstr; }else{ rstr = arr[0].substring(arr[0].length-ii,arr[0].length-ii-1) + rstr; } } rstr = sign + rstr; return arr.length > 1 ? rstr + "." + arr[1] : rstr; }else{ return str; } }
활용예제
isNumeric( "+1,235,000.722" ) // true isNumeric( "+1,235,000.722", 2 ) // false isNumeric( "1,235,000.722", 2 ) // true isNumeric( "1,235,000.722", 3 ) // false isNumeric( "1235000.722", 3 ) // true isNumeric( "1235000.722", 4 ) // false isNumeric( "1235000", 4 ) // true isNumeric( "가2342나다라232233사아" ) // false isNumeric( "abc2212223defghi" ) // false getNumeric( "1,235,000.722" ) // 1235000.722 getNumeric( "-6,529,000.428" ) // -6529000.428 getNumeric( "59,240,000" ) // 59240000 getNumeric( "가2342나다라232233사아" ) // 가2342나다라232233사아 getNumeric( "abc2212223defghi" ) // abc2212223defghi formatNumber( "+1235000.722" ) // 1,235,000.722 formatNumber( "-6529000.428" ) // -6,529,000.428 formatNumber( "59240000" ) // 59,240,000 formatNumber( "가2342나다라232233사아" ) // 가2342나다라232233사아 formatNumber( "abc2212223defghi" ) // abc2212223defghi
'개발 > javascript,jQuery' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 퓨리스 A34
- 티스토리
- 해운대
- 자동차 디테일링
- 퓨리스 A34 왁스
- 세차
- 티스토리 반응형 스킨
- 블로그
- 티스토리 새 반응형 웹스킨 #1
- 티스토리 스킨
- 포스타 upp
- TDG 블루베리 휠클리너
- 디테일링
- 타이어 광택제 비교
- 티스토리 반응형 스킨 #1
- 퓨리스 타이어 광택제
- 데피니티브 율리시스
- 타이어 드레싱
- 셀프세차
- 타이어 광택제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |