正则表达式 - 在JavaScript中能否只用一条正则完成以下匹配替换?
黄舟
黄舟 2017-04-11 08:57:06
[JavaScript讨论组]

将形如5466464.56464的一个浮点数的整数位每三位加一个逗号:
如5,466,464.56464
需要排除小数点后面的数,但是问题在于后面的小数点可能没有也可能有,并且JS中的正则是不支持?<!这种往左边的逆向查找,如果先做一个if判断也是可以的,但是我想知道有没有办法在js中同时满足以上两种情况并且只用一条正则实现?
这个是我目前的写法,但无法处理后面不包含小数点的情况

var str = "11234565678.758878",str2 = "11234565678";
var reg = /(\d)(?=(\d{3})+(?!\d)\.\d*$)/g,
reg2 = /(\d)(?=(\d{3})+(?!\d))/g;  //这种写法会连小数点后面的也加逗号。。
str.replace(reg,"$1,")  //11,234,565,678.758878
str.replace(reg2,"$1,") //11,234,565,678.758,878 小数点后面的也加了逗号
str2.replace(reg,"$1,")  //11234565678  后面不带小数点的话就匹配失败了
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
大家讲道理

话说你要是只是为了达到这个效果,可以用jquery-number

ringa_lee

如果只是探讨的目的, 那也试试最新的正则特性吧, es6 es7 新增了不少正则的扩展. 比如能解决题主问题的后行断言

var pattern = /(?<!\.\d*?)(\d)(?=(\d{3})+(?!\d))/g; 

chrome 49+ 已经支, 可以在进about:flags 开启 实验性javascript.

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

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