繁体   English   中英

正则表达式允许十进制数大于0且小于100

[英]Regex to allow decimal numbers greater than 0 and less than 100

我试图输入大于0且小于100 ,我正在使用以下正则表达式:

/^(0+)?(99(\.99?)?|(\.99?)?|\.[0-9]+|0?[0-9](\.[0-9]{0,2})?|(0+)?[0-9][0-9](\.[0-9][0-9]?)?)$/

这个正则表达式不会抱怨零,但0.01是一个有效值。

基本上,我试图获得00.00格式的值,并且也可以使用0.01, 00.01, ... 99.99类的值0.01, 00.01, ... 99.99但仅限数字和点。

我正在使用

^(?!0?0\.00$)\d{1,2}\.\d{2}$

你可以简单地使用它。参见演示。

https://regex101.com/r/qB0jV1/10

那么为什么你必须用复杂的正则表达式来打败自己。 为什么不进行数字比较?

function validNum (num) {
   num = parserFloat(num);

   return num > 0 && num < 100;
}

只想要两位小数?

function validNum (num) {
   num = parseFloat((num + "").replace(/^(.*\.\d\d)\d*$/, '$1'));

   return num > 0 && num < 100;
}

在这里测试

.5:      true
..5    : false
.005   : false
0.05   : true
99.99  : true
00.01  : true
00.00  : false
0.00   : false
00.0   : false
100.00 : false

我想你不想允许0.0000.00

^(?!00?\.00$)\d{1,2}(?:\.\d{2})?$

要么

^(?!00?\.00$)\d{1,2}(?:\.\d{1,2})?$

DEMO

开头的负向前瞻(?!00?\\.00$)断言要匹配的数字不是00.000.00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM