求价格正则表达式(严格要求的)。

来源:百度知道 编辑:UC知道 时间:2024/05/16 20:30:36
为正数,可以出现两位小数,或者不出现。
我现在用的是 \d{1,10}\.*\d{0,2}
但是不能判读0.00、0这两个特殊价格为无效价格。
请高手解决下……

按照你的表达式, 0..11也是通过的但却是无效价格(11替换成其他任何数字都这样,小数点也可以无限多个)。

你是不是希望价格应该大于0啊?0.0 0.也是无效价格吧?

另外是不是还要求:要么是正整数,要么就是带有两位小数?

我的建议是,不要把正则表达式看成是万能的,价格大于0的情况,可以在正则判断价格格式合法后比较 float(a) > 0

正则表达式可以这么写:
\d{1,10}(\.\d{2})?$
如果允许带有一位小数,可以这么写:
\d{1,10}(\.\d{1,2})?$
(不知道整数部分是不是一定要控制在10个以内,如果位数不限,可以写成\d+)
不知道你用的什么语言,我在Python里测试通过

你写得太不严格了,问题很多,按以下三种情况就比较严格了:

1. 整数部分非零
[1-9]\d{0,9}(\.\d{1,2})?

2. 0.1x - 0.9x
0\.[1-9]\d?

3. 0.0x
0\.0[1-9]

把三种情况结合起来就是:
[1-9]\d{0,9}(\.\d{1,2})?|0\.[1-9]\d?|0\.0[1-9]