通过正则来转换数字金额大写

简单的通过正则表达式来匹配数字转换中文大写

 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, "元整");
}
百度已收录
分享