2016-12-01 44 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

相关问题