javascript 格式化字符串函数,将输入123455.9833格式化为 123,455.98

来源:互联网 发布:随机梯度下降算法 编辑:程序博客网 时间:2024/06/05 03:57

^/-?[1-9]/d{0,2},(/d{3},)*/d{3}(/./d+)?$          //匹配 12,045,345.343  -12,045,345.343带千分位
^/-?[1-9]/d{0,2}(/./d+)?$                                   //匹配 34.454   -34.454 不带千分位
^/-0?(/./d+)$|^/-0(/./d+)?$|^0?(/./d+)?$            //匹配 -0.123 .343         无整数位
^/-?[1-9]/d+(/./d+)?$                                          //匹配 123455.98 -3243545.55  普通double类型

上面分了几种情况,下面将上面几种情况拼起来就是我要的正则表达式

^/-?[1-9]/d{0,2},(/d{3},)*/d{3}(/./d+)?$|^/-?[1-9]/d{0,2}(/./d+)?$|^/-0?(/./d+)$|^/-0(/./d+)?$|^0?(/./d+)?$|^/-?[1-9]/d+(/./d+)?$


现在希望各位熟悉正则表达式的朋友指点,是否能优化一下,感觉实在太长。

以下是javascript 格式化字符串函数,将输入123455.9833格式化为 123,455.98

1   <script language="javascript">
 
2        <!--
 
3        
 
4        function formatString(el)
 
5        {        
 
6            var obj;    
 
7            if(arguments.length==0)                
 
8                obj = event.srcElement;
 
9            else
10                obj = el;
11            val = obj.value;
12            //首先格式化小数为2位
13            var regex = /^-?[1-9]d{0,2},(d{3},)*d{3}(.d+)?$|^-?[1-9]d{0,2}(.d+)?$|^-0?(.d+)$|^-0(.d+)?$|^0?(.d+)?$|^-?[1-9]d+(.d+)?$/;
14            if(val!="" && regex.test(val)==true)
15            {
16                ary = val.split(".");
17                if(ary.length==1)
18                {
19                    if(val == "")
20                        val = "0";
21                    obj.value = val + ".00";
22                }

23                else
24                {
25                    if(ary[1].length<2)
26                        obj.value = val + "0";
27                    else if(ary[1].length>2)
28                        obj.value = ary[0+ "." + ary[1].substring(0,2);
29                }

30            }

31            //对没有逗号分隔符的输入加上逗号分隔符
32            regex = /^-?[1-9]d{3,}(.d+)?$/;
33            if(regex.test(obj.value)==true)
34            {
35                val = obj.value;
36                var zf = parseFloat(val)<0?"-":"";
37                if(zf!="")
38                    val = val.substr(1);
39                ary = val.split(".");
40                var len = ary[0].length;
41                len = (len-len%3)/3 + (len%3>0);
42                var str = "";
43                var m = ary[0];
44                for(var i=len-1; i >= 0; i--)
45                {
46                    var d = Math.pow(1000,i);
47                    var y = m%d;    //余数
48                    var s = (m-y)/d;
49                    if(i<len-1)
50                    {
51                        for(var j=2;j>0; j--)
52                        {
53                            if(s < Math.pow(10,j))                
54                                s = "0" + s;    
55                            else
56                                break;
57                        }

58                    }

59                    if(str!="")
60                        str += ",";
61                    str += s;
62                    m = y;
63                }

64                if(zf!="")
65                    str = "-" + str;
66                if(ary.length>1)
67                    obj.value = str+"."+ary[1];
68                else
69                    obj.value = str+".00";
70            }

71        }

72        
73        //-->
74        </script>
 
原创粉丝点击