// 金额千分位格式化
function momenyFormat(num) {
// 数字转字符串
let result = `${num}`;
// 校验输入值是否为数字
const regNumber = /^\d+$|(\d+\.\d+)/g;
// 校验小数点及右侧部分
const regRight = /(?<=\d)(\.\d+)/g;
// 校验小数点左侧的部分
const regLeft = /(\d)(?=(\d{3})+$)/g;
// 判断是否是数字
if (regNumber.test(result)) {
// 判断是否包含小数点
if (/\./g.test(result)) {
// 提取小数点和右侧部分
const right = regRight.exec(result)[0];
// 替换小数点和右侧部分为空白,得到小数点左侧部分
// 对左侧部分进行千分位处理
const left = result.replace(regRight, "").replace(regLeft, "$1,");
// 左右两部分拼接
result = `${left}${right}`;
} else {
// 不包含小数点,直接千分位处理
result = result.replace(regLeft, "$1,");
}
} else {
console.warn(`invalid number ${num}`);
}
return result;
}
console.log(momenyFormat()); // warn + undefined
console.log(momenyFormat(1231)); // '1,231'
console.log(momenyFormat("123213.23211w")); // warn + '123213.23211w'
console.log(momenyFormat(1232137.23211)); // 1,232,137.23211
console.log(momenyFormat("32s.324")); // warn + "32s.324"
console.log(momenyFormat("122213,343")); // warn + "122213,343"
image.png
网友评论