这个真的是有点意思,这里记录一下,大体的意思就是给你一串数字,然后你用三个一逗号的形式把数字表达出来,比如: 50153855514.7667 表达出来就是 50,153,855,514.7667

第一想法都是使用正则来匹配,我以为使用一个正则就能出来了,后来发现想的太简单了,头疼了好一会,又是正向肯定匹配又是反向否定匹配的弄了半天,后来想了个法子,从小数点分割开,然后再用俩次正则来达到效果。

formateMoney.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function formateMoney(money) {
if (money && money > 0) {
let moneyFormate = (money + "").split(".");
return (
moneyFormate[0].replace(/(\d{3})+$/gi, (match, $1, $2) => {
let result = match.replace(/(\d{3})/gi, (_match, _$1) => "," + _$1);
return $2 !== 0
? result
: result.replace(/,([,|\d]+)/gi, (__match, $11) => $11);
}) +
(moneyFormate[1]
? "." + moneyFormate[1]
: '')
);
} else {
return money;
}
}
result
1
2
3
4
let money1 = 12942222.22;
console.log(formateMoney(money1)); //12,942,222.22
let money2 = 914874.2;
console.log(formateMoney(money2)); //914,874.20