http://www.cssrain.cn/article.asp?id=40
<script language="JavaScript">
var stmp = "";
function nst(t)
{
if(t.value==stmp) return;//如果等于上次输入则返回
var ms = t.value.replace(/[^\d\.]/g,"").replace(/(\.\d{2}).+$/,"$1").replace(/^0+([1-9])/,"$1").replace(/^0+$/,"0");
//replace(/[^\d\.]/g,"")去掉输入当中不是数字和.的字符
//replace(/(\.\d{2}).+$/,"$1")
//匹配从字符开始的第一个.后面的所有字符,由于没有使用g标记,
//所以只匹配开始第一次 然后用小数点和后两位进行替换以确定数值最后的格式正确 高.
//replace(/^0+([1-9])/,"$1") 匹配以多个0开头的数值替换为去掉0后的数值做为数字的第一位 也是匹配开始的一次.
//replace(/^0+$/,"0") 匹配以0开始和结束的多个0为一个0 也就是0000000 输入->转换成一个0
//以下确定输入的为过滤后的合法数字
//alert(ms);
var txt = ms.split(".");
//alert(txt[0]);
//如果ms值不小数点存在则txt[0]=小数点前的值否则等于ms
//regexp:/\d{4}(,|$)/ 匹配四位数字和,的集合或者四位数字和字符结尾的集合
while(/\d{4}(,|$)/.test(txt[0]))//如果为txt[0]=4123
txt[0] = txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2");
//txt[0].replace(/(\d)(\d{3}(,|$))/,"$1,$2")是将txt[0]进行替换后再赋给它
//regexp:/(\d)(\d{3}(,|$))/ 将四个数字份为两组第一个数字为第一位,后三位和其他结尾为每二位
//并替换成 第一位,第二位 注意 ,的使用很好. 也就是将4123先替换成4,123
//由于此表达式默认采用贪婪匹配所以从数值后向前匹配再通过循环进行再匹配替换从而可以将
//12345678分成你想要的123,456,78 楼主彩用(,|$)很精典,因为它略去了第二次匹配时的,问题
t.value = stmp = txt[0]+(txt.length>1?"."+txt[1]:"");
//最终赋值到输入框中
//如果有小数点则加上并购成最终数字否则显示替换后的txt[0]
bbb.value = number2num1(ms-0);
//将ms转换为数字送到number2num1去转换
}
function number2num1(strg)
{
var number = Math.round(strg*100)/100;
//先进行小数位数转换也就是四舍五入由于上面已限定了小数位可不用
number = number.toString(10).split('.');//转换成十进制字符并用小数点隔开
var a = number[0];//取小数点前的值如果有小数点则取它前面的否则取这个数值
if (a.length > 12)//判断是否超过了计算范围
return "数值超出范围!支持的最大数值为 999999999999.99";//退出
var e = "零壹贰叁肆伍陆柒捌玖";
var num1 = "";
var len = a.length-1;
for (var i=0 ; i<=len; i++)//按单个数字逐个进行遍历
num1 += e.charAt(parseInt(a.charAt(i))) + [["圆","万","亿"][Math.floor((len-i)/4)],"拾","佰","仟"][(len-i)%4];
//e.charAt(parseInt(a.charAt(i)))将所选数字对应到相应的大写数组下标并取出大写值
//[["圆","万","亿"][Math.floor((len-i)/4)],"拾","佰","仟"][(len-i)%4]
// ["圆","万","亿"][Math.floor((len-i)/4)]如果小于4位显示 "圆"
// 如果大于4位小于8位则显示 "万"
// 如果大于8位则显示 "亿"
//由上面得到一个新数组 -> 如果小于4位显示 ["圆","拾","佰","仟"]
// 如果大于4位小于8位则显示 ["万","拾","佰","仟"]
// 如果大于8位则显示 ["亿","拾","佰","仟"]
// [(len-i)%4] 得到相应的所属下标 分别得到 "圆","万","亿","拾","佰","仟
//下面处理小数点后的数值
if(number.length==2 && number[1]!="")
{
var a = number[1];//得到.后数值
for (var i=0 ; i<a.length; i++)
num1 += e.charAt(parseInt(a.charAt(i))) + ["角","分"];
}
//以上完成后再进行正则过滤掉一些重复字符
num1 = num1.replace(/零佰|零拾|零仟|零角/g,"零");//全局替换零
num1 = num1.replace(/零{2,}/g,"零");//替换2个以上零为一个零
num1 = num1.replace(/零(?=圆|万|亿)/g,"");//替换零圆,零万,零亿,中的零为空
num1 = num1.replace(/亿万/,"亿");//替换亿万为亿只替换第一次
num1 = num1.replace(/^圆零?/,"");//替换字符串中开始的圆零为空此匹配为非贪婪匹配.适用于.57转换时
//如果要最终数值不为空并且该串结尾不为"分"结尾则加一个"整字"
if(num1!="" && !/分$/.test(num1))
num1 += "整";
return num1;
}
</script>
<!--按键弹起时触发转换事件-->
小写金额:<input type="text" name="aaa" onkeyup="nst(this)"><br>
大写金额:<input type="text" name="bbb" size=80>
分享到:
相关推荐
将数字金额转换为中文大写金额将数字金额转换为中文大写金额将数字金额转换为中文大写金额
关于数字金额转换为¥的问题! 很值得下载看看!资源免费,大家分享!!
SQL实现金额的转换,转换成中文大写,的处理
javascript货币金额小写立即转换为大写,(ps:网络上下载的)。
create or replace function sf_get_money(p_num in number default null) 此函数处理数字小写金额转换为大写金额
自动将输入的金额转换成大写 如输入 123转换为 壹百贰拾叁元整 输入123.12 转换为 壹百贰拾叁元壹角贰分
C语言版小写金额转换大写,最大支持 2^31-1 大约21亿
自己写的将阿拉伯数字金额转换为中国传统形式人民币值的小程序,亲测可用!
oracle数据库,使用自定义函数,实现了金额的大写转换。sql语句中,直接调用此函数即可得到金额大写。
关于金额大,小写转换的问题! 很值得下载看看!资源免费,大家分享!!
java银行金额转换
小写金额转换大写金额,小写金额转换大写金额.
金额转换为大写 JavaScript 转换函数
金额转换,中文金额转数字金额,数字金额转中文金额,中文金额转数字金额从字符串中获取中文大写金额或是数字金额,不支持小数,中文金额不支持混写,如 五千零壹十万元,不支持转换会输出0,字符串可以不用截取,...
本程序演示了如何把数字转换成汉字大写金额, 目前支持到千万位的金额和角、分, 并按平常的读写习惯自动增加 “零”。
把小写金额转换成大写金额(显示在不同格里)
将金额转换成大写金额,提供封装类 及 例子
该资源是asp.net+c#页面程序,采用四种方法将数字形式的金额转换为中英文金额写法。
输入字符,通过正则验证是否为金额不超过万亿精确到小数点后两位,然后将数字转换为大写 包括后台java正则验证及前台js验证 请输入一个数字(精确到小数点后两位): fdsa54325.54 fdsa54325.54 false 请输入一个...