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

时间:2014-12-11 04:38:54

标签: javascript html regex

我正在尝试输入大于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之类的值,但仅限数字和点。

我正在使用

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:3)

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

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;
}

Test Here

.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

答案 2 :(得分:1)

我认为你不想允许0.0000.00

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

OR

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

DEMO

开始时的否定前瞻(?!00?\.00$)断言匹配的数字不会是00.000.00