简单的通过正则表达式来匹配数字转换中文大写
function change(money) {
//判断传入的是否是数字类型或是能转成数字的字符串
if(typeof money == 'object' || Object.prototype.toString.call(Number(money)) !== '[object Number]' || Number.isNaN(Number(money))){
throw new Error('请传递一个有效的数字类型')
}
//保留有效4位数,精确到厘并转换为字符串
money = (Number(money).toFixed(4) + '').replace('.','');
let moneyLen = money.length;
let unit = "千百拾亿千百拾万千百拾元角分毫厘"
let resultMoney = "";
unit = unit.substr(unit.length - moneyLen);
for (let i=0; i < moneyLen; i++){
resultMoney += '零壹贰叁肆伍陆柒捌玖'.charAt(money.charAt(i)) + unit.charAt(i);
}
//替换多余文字
return resultMoney.replace(/零(千|百|拾|角)/g, "零")
.replace(/(零)+/g, "零")
.replace(/零(万|亿|元)/g, "$1")
.replace(/(亿)万|壹(拾)/g, "$1$2")
.replace(/^元零?|零分/g, "")
.replace(/^分/, "零")
.replace(/零(厘|毫)/g,'')
.replace(/元$/g, "元整");
}
百度已收录

通过正则来转换数字金额大写:等您坐沙发呢!