2016-12-01 45 views
1

我想獲得regex它可以驗證a)接受的數字應該在0到20之間b)這些數字可以有1或2個十進制數。正則表達式接受0到20之間的數字,包括1或2個十進制數字C#

正則表達式:

^(10|\d)(\.\d{1,2})?$ 
(10|\d) allows for a single digit or 10 
(\.\d{1,2})? possible decimal followed by 1 or 2 digits 

這給我從0到10(http://regexr.com/)期望的結果。我不知道有什麼需要修改,如果我想它接受從0到20

有效期:

0 
1 
2 or 2.5 
20 

無效:

21 
.1 
.0345 

這是我曾嘗試:

1. ^\d{0,2}$(\.\d{1,2})?$ 
- Accepts 0 to 99 but no decimal 

2. ^([1-9]|20)$ 
- Accepts 1 to 9 only 

回答

1

您可以使用此正則表達式:

^(?:1?\d(?:\.\d{1,2})?|20(?:\.0?0?)?)$ 

RegEx Demo

  • (?:1?\d) - 將在範圍0-19
  • (?:\.\d{1,2})?匹配數 - 將允許可選1張或2的十進制數。
  • 20(?:\.0?0?)? - 匹配20,小數點後可選零。
+1

完美。這是我正在尋找的。 – CSharper

+0

我注意到這個正則表達式接受的值大於20但小於21.例如,20.15,20.99 – CSharper

+0

好的結果。我已經更新了我的答案。它現在應該工作。 – anubhava

相關問題