mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, December 27, 2006

자바스크립트] 숫자 천단위 쉼표(콤마) 넣기; JavaScript Comma Number, Thousands Separator


자바스크립트에서, 숫자 천단위, 즉 3자리마다 쉼표를 찍는 방법입니다. 직접 숫자를 분해해서 콤마를 넣는 것은 복잡하기 때문에, 정규식을 사용했습니다. 자바스크립트에서도 펄 스타일의 정규식을 지원합니다.

소수점과, 플러스 마이너스 부호도 처리할 수 있습니다.

숫자 세 자리마다 콤마 찍기 함수 예제; Commify, Commafy


<script type="text/javascript">

var s = commify(-1234567890.123);
document.write(s + '<br />');
// 출력 결과: -1,234,567,890.123


function commify(n) {
  var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
  n += '';                          // 숫자를 문자열로 변환

  while (reg.test(n))
    n = n.replace(reg, '$1' + ',' + '$2');

  return n;
}

</script>


정규식 설명:

숫자의 끝부분부터 매치시키며, 루프 속에서 숫자의 좌측으로 즉 앞쪽으로 이동합니다.

이미 쉼표화가 된 부분이나, 소수부는 (^[+-]?\d+)(\d{3}) 이런 정규식으로 매치되지 않기에, 점점 앞쪽으로 이동하게 됩니다.

$1 은 앞쪽 소괄호가 매치되는 내용
$2 는 뒤쪽 소괄호가 매치되는 내용이기에 그 사이에 쉼표(,)를 넣어주고 치환합니다.


그리고
while (reg.test(n))
이 부분은 정규식이 매치되는 동안 계속 루프를 돌리라는 뜻입니다. test() 메소드(METHOD; 함수)는, 문자열 안에서 정규식(Pattern)이 매치되는지 아닌지 테스트합니다. 매치되면 true, 아니면 false 를 반환합니다.



자바스크립트로 숫자 천단위마다 쉼표를 넣는 소스는 많이 있는데, 소수점이나 플러스/마이너스 부호를 처리하지 못하는 문제가 있어서, 실제 사용에는 무리가 있었습니다. 그래서 위와 같은 함수를 만들어 보았습니다.




tag: html
HTML | CSS | 자바스크립트 JavaScript
tag: regex
정규식 | 정규표현식 | Regex | Regular Expression

1 Comments:
At March 12, 2019 at 10:13 AM, Blogger Unknown said...

감사합니다. 설명 너무 깔끔해서 정규식 몰라도 바로 눈치껏 알아볼 수 있었습니다.

 

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top