簡體   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