不得不说 正则表达式可视化 是真的不错, 研究正则的时候, 这个网站是很好的帮手。
现在前端页面有一个金额输入框, 需要对输入的金额进行校验。如果校验不通过, 禁用提交的按钮。
校验的规则大体如下:
1 不能输入非正数, 比如
-1
-1.3
0
0.233
2 充值金额最小是一角0.1
最小得单位是分
3 可以输入小数,由 2 可知小数点最多在百分位
4 最大的充值金额是999999.99
首先大致划分一下,不考虑 .11
这种简写的情况下 金额的第一位是可以出现 0
的, 但是仅仅限于 0.11
0.1
0.17
这种小数。而 011
01.22
000
这种事不合法的。
对于后一种 正则可以这样写: /^([1-9]\d{0,5})(\.\d{1,2})?$/g
。
第一位一定是 1-9
之间的数字,紧接着后面的数字可以是 0-9
之间的任意一个,重复 0-5
次, 因为第一位已经占了一位了。
后面的小数点可以没有, 有的话 [0-9]
重复最少一次(小数点之后必须有数字), 最多两次 (保证最小单位是分)
对于小数点, 第一位肯定是 0
, 十分位最小是 1
正则:/^0\.[1-9]{1,2}$/g
这种写法的话, 会认为 0.10
是非法的, 其实也没有必要在最后补上 0
如果接受
0.10
这种 ,可以这样写 /^0\.[1-9]\d?$/g
3.png
最后将两者(1 & 3)
结合起来 /^([1-9]\d{0,5}(\.\d{1,2})?|0\.[1-9]\d?)$/g
如果你认为 .11
这种也是合法的数字 可以稍加修改 /^([1-9]\d{0,5}(\.\d{1,2})?|0?\.[1-9]\d?)$/g
网友评论