Wednesday, December 27, 2006
자바스크립트] 숫자 천단위 쉼표(콤마) 넣기; JavaScript Comma Number, Thousands Separator
자바스크립트에서, 숫자 천단위, 즉 3자리마다 쉼표를 찍는 방법입니다. 직접 숫자를 분해해서 콤마를 넣는 것은 복잡하기 때문에, 정규식을 사용했습니다. 자바스크립트에서도 펄 스타일의 정규식을 지원합니다.
소수점과, 플러스 마이너스 부호도 처리할 수 있습니다.
정규식 설명:
숫자의 끝부분부터 매치시키며, 루프 속에서 숫자의 좌측으로 즉 앞쪽으로 이동합니다.
이미 쉼표화가 된 부분이나, 소수부는 (^[+-]?\d+)(\d{3}) 이런 정규식으로 매치되지 않기에, 점점 앞쪽으로 이동하게 됩니다.
$1 은 앞쪽 소괄호가 매치되는 내용
$2 는 뒤쪽 소괄호가 매치되는 내용이기에 그 사이에 쉼표(,)를 넣어주고 치환합니다.
그리고
while (reg.test(n))
이 부분은 정규식이 매치되는 동안 계속 루프를 돌리라는 뜻입니다. test() 메소드(METHOD; 함수)는, 문자열 안에서 정규식(Pattern)이 매치되는지 아닌지 테스트합니다. 매치되면 true, 아니면 false 를 반환합니다.
자바스크립트로 숫자 천단위마다 쉼표를 넣는 소스는 많이 있는데, 소수점이나 플러스/마이너스 부호를 처리하지 못하는 문제가 있어서, 실제 사용에는 무리가 있었습니다. 그래서 위와 같은 함수를 만들어 보았습니다.
소수점과, 플러스 마이너스 부호도 처리할 수 있습니다.
숫자 세 자리마다 콤마 찍기 함수 예제; 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>
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
감사합니다. 설명 너무 깔끔해서 정규식 몰라도 바로 눈치껏 알아볼 수 있었습니다.
<< Home