Web/Javascript

[Javascript] 숫자 3자리마다 콤마(,) 찍기(정규식,toLocalString)

꾹꾹이 2021. 11. 10.
728x90

숫자 세자리 마다 콤마(,) 찍는 방법 두가지를 소개합니다.

 

1. 정규식(Regular Expression) 사용하기

 

var number = 1234567.89;
     return number.toString().replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ",");

//returns 1,234,567.89

하지만 위 정규식에서의 ?<! 와 같은 표기법은 최신 기법으로, 익스 ~11, ios, safari 에서 통하지 않는 스크립트이다.

때문에 위처럼 넣게되면 함수 자체가 에러를 뱉어내므로, 스크립트를 호출하지 못하는 에러가 발생한다.

(object Error / function undefined)

 

return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

//returns 1,234,567.89

위와같이 정규식을 기술해야 익스, ios, safari 에서 정상적으로 함수를 호출할 수 있게 된다.

 

 

 

2. toLocaleString() 함수 사용하기 
var number = 1234567.8911111;
     return number.toLocaleString();

//returns 1,234,567.89

반드시 숫자를 변수에 담은 뒤에 사용해야한다. 변수 안에 숫자를 넣으면 생성되는  Number 객체 안에 있는 함수를 사용하는 것이기 때문에  그냥 상수 옆에 사용하면 실행되지 않는다.

 

소수점 아래 숫자를 세자리 이상 출력하고 싶으면 아래와 같이 하면 된다.

var number = 1234567.8911111;
     return number.toLocaleString(undefined, {maximumFractionDigits: 5});

//returns 1,234,567.8911111

 

무조건 소수점 아래 10자리를 뽑아야하면 아래와 같이 하면 된다.

var number = 1234567.8911111;
     return number.toLocaleString(undefined, {maximumFractionDigits: 10});

//returns 1,234,567.8911111000

 

 

출처: https://nm817.tistory.com/53#comment13909717, https://this-programmer.tistory.com/186

댓글