前端充值数目正则表示

2019-05-17  本文已影响0人  康乐芳华

不得不说 正则表达式可视化 是真的不错, 研究正则的时候, 这个网站是很好的帮手。

现在前端页面有一个金额输入框, 需要对输入的金额进行校验。如果校验不通过, 禁用提交的按钮。
校验的规则大体如下:

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] 重复最少一次(小数点之后必须有数字), 最多两次 (保证最小单位是分)

1.png

对于小数点, 第一位肯定是 0, 十分位最小是 1 正则:/^0\.[1-9]{1,2}$/g
这种写法的话, 会认为 0.10 是非法的, 其实也没有必要在最后补上 0

2.png
如果接受 0.10 这种 ,可以这样写 /^0\.[1-9]\d?$/g
3.png

最后将两者(1 & 3) 结合起来 /^([1-9]\d{0,5}(\.\d{1,2})?|0\.[1-9]\d?)$/g

4.png

如果你认为 .11 这种也是合法的数字 可以稍加修改 /^([1-9]\d{0,5}(\.\d{1,2})?|0?\.[1-9]\d?)$/g

5.png
上一篇 下一篇

猜你喜欢

热点阅读