javascript - 关于正则显示金额的问题
伊谢尔伦
伊谢尔伦 2017-04-11 10:19:04
[JavaScript讨论组]

请教一个车价的显示正则匹配:

1500000 显示150万;
1505500 显示150.55万;
1505550 显示150.56万四舍五入百以后的数值


求解~

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(6)
伊谢尔伦
        <script type="text/javascript">
            function change(num) {
                num = num / 10000;
                if(typeof num != 'number') {
                    return
                }
                var numStr = num.toString();
                var index = numStr.indexOf('.')
                if(index == -1) {
                    return numStr += '.00万'
                } else if(numStr.length - index == 2) {
                    return numStr += '0万'
                } else if(numStr.length - index == 3) {
                    return numStr
                } else {
                    var reg = /.(\d{3})\d*$/;
                    newNum = numStr.replace(reg, function($0, $1) {
                        //tempDec 用来判断四舍五入后小数位数
                        var tempDec = Math.round(Number($1.substring(0, 2) + '.' + $1.substring(2)));
                        var newDec;
                        tempDec = tempDec.toString();
                        tempDec === 0 ? newDec = '00' : (tempDec.length == 1 ? newDec = '0' + tempDec : newDec = tempDec)
                        console.log(newDec)
                        return '.' + newDec
                    })
                }
                return newNum + '万'
            };
            console.log(change(1005555))
        </script>

很早以前写的,你再测试一下。

大家讲道理
['1500000','1505500','1505550'].forEach(function(item){
     console.log(item.replace(/^(\d+)(?=\d{4})(\d{2})(\d+)$/,'$1.$2万'))
})
四舍五入忽然不想写了。
阿神

我觉得函数也可以达到,所以就用函数来写。
写一个简单的:

var x = 1500000;
function handlePrice(num) {
    if(typeof num != "number") return "wrong number";
    if(num >= 100) {
        num = num/10000;
        num = num.toFixed(2);
        return num + "万";
    }
    return num;
}

PS:

1 JavaScript中的浮点数计算可能会有点问题,所以建议重写一个做除法运算的函数.
2 如果题主一定要正则表达式,那就只能看别人的答案了。
阿神

round($money/1000,2)

黄舟

为什么要正则,先将数字转为单位为万的小数,然后保留小数不就行了?

PHP中文网

var n = 1505550;
var a = 1500000;
var b = 1505500;
var m =(Math.round(n/100)/100).toFixed(2);
var c =(Math.round(a/100)/100).toFixed(2);
var d =(Math.round(b/100)/100).toFixed(2);
alert(m);alert(c);alert(d);

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号