当前位置:   article > 正文

大于0且能包含小数的正则表达式,屏蔽00和0.0等_大于0的正则

大于0的正则

开发过程中遇到涉及金额的数字,金额要求是大于0的数,可以包括小数。所以也就能包含0.5,0.50,0.01,1.01等等这样的数字。
要写一个正则判断用户输入的金额是否合法,在网上找了很多正则,都没办法满足,网上大多数正则没办法过滤掉像:0、00、001、0.0、01.1、01.0等,有的还会屏蔽0.50这些类似数字,大家可以先自测一下。

所以最后捡起来几乎快忘掉的正则,自己写了一个:

/^([1-9]\d*(\.\d*[1-9][0-9])?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/
或者:
/^([1-9]\d*(\.\d*)?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/
  • 1
  • 2
  • 3

自测是能够正常的输入大于0(包括像0.10,0.01,且屏蔽像00,0.0,001,01.0,01.1等)的数。
最后补上解析:

/^([1-9]\d*(\.\d*[1-9][0-9])?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/
解析: 
/
^ //匹配开头
[1-9] //表示第一个数为1~9中的任意一个(不能为0开头,0开头的在后半部分):匹配1~9
\d*  //表示0-9的任意一个数字,可以为多位数 :匹配除开头数字外的整数部分
(\.\d*)? //表示跟小数点,以及任意数字:匹配小数点,以及小数点后面可以为任意数
| //表示选择,即“或”,第二种可能
0\.\d*[1-9][0-9] //表示以0开头,后面接小数点,小数点后面第一位数在1~9之间,第二位数可以在0~9之间
| //表示选择,即“或”,第三种可能
0\.\d*[1-9] 表示以0开头,后面接小数点,小数点后面只有一位不为0的数
$ //匹配结尾
/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

一边测试一边解析,发现单靠上面好像不能过滤掉汉字或者标点符号那些,我是项目里面还有封装的校验,如果是input框,type设置为number应该就可以了,还是需要多测试。

整理的有点匆忙,有不足的欢迎提出,后续修改!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56840
推荐阅读
相关标签
  

闽ICP备14008679号