正则表达式-验证带千分号的,带任意位小数的数字类型

想写一个正则表达式,验证带千分号的,带任意位小数的数字类型


网上找来找去找到几个都不行,然后根据下面两个自己组装了一下,终于成功:

^[-+]?(\d+(\.\d*)?|\.\d+)[dD]?$          可以带正负号的,任意位小数的实数

(\d*(,\d{3})*(.(\d{3},)*\d+)?)              不带正负号,可以带任意位小数的实数,但是有bug,如果给小数写上千分位,也能通过验证


第一次优化

^[-+]?(\d*(,\d{3})*(.(\d{3},)*\d+)?|\.\d+)[dD]?$     bug依旧

第二次优化

^[-+]?(\d*(,\d{3})*(.\d+))[dD]?$   bug消除了

最后试了试貌似这样也可以

^[-+]?(\d*(,\d{3})*.(\d+)?)


最终解决方案,暂时还没有发现bug

^[-+]?(\d*(,\d{3})*.(\d+)?)


2017.1.4

谢谢网友指出的bug,下面是新方案:

^[-+]?\d{1,3}(,\d{3})*(\.(\d*))?$


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangcns/article/details/37725189
文章标签: 正则表达式
个人分类: C#
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭