正则表达式 - 验证数字

时间:2013-11-19 14:35:39

标签: regex validation

我需要知道如何验证一个数字,但这不是任何数字,我需要验证这个:

如果数字 0 或数字介于0.50和100之间

我可以允许0和任何其他数字(有或没有小数,如果有,最多2位小数),但它必须在0.50和100之间。

我有这个:

^[0-9]+\.?[0-9]*$

但它验证了任何数字,我不能这样做。

我需要在单个表达式中验证它,有人可以帮助我吗? 感谢。

4 个答案:

答案 0 :(得分:2)

试试这个:

^0$|^100$|^(([1-9]{1}[0-9]?)(\.\d{1,2})?)$|^0\.[5-9]{1}(\d?)$

Regular expression visualization

Debuggex Demo

答案 1 :(得分:2)

这个适合你:

^((?:10)?0|0\.(?:[5-9]\d?)|(?:[1-9]|[1-9]\d)(?:\.\d{1,2})?)$

详细信息:

  • (?:10)?0:0和100的特殊情况
  • 0\.(?:[5-9]\d?):匹配0.50到0.99(包括0.5,0.6 ......)
  • (?:[1-9]|[1-9]\d)(?:\.\d{1,2})
    • (?:[1-9]|[1-9]\d):整数部分,匹配1到9,以及10到99
    • (?:\.\d{1,2}):小数部分,匹配00到99(包括0,1,2 ......)

Regular expression visualization

Debuggex Demo

答案 2 :(得分:1)

试试这个:

^(100|0|0?\.[5-9][0-9]?|[1-9][0-9]?(\.[0-9][0-9]?)?)$

答案 3 :(得分:0)

我相信这是写它的方式:

^100|[1-9]{1,2}(\\.[0-9]{0,2})?|0(\\.[5-9][0-9])?)$ 

虽然看起来很尴尬。

LE:

^0$|^100$|^0\\.[5-9]\\d?$|^([1-9]|\\d{2})(\\.\\d{1,2})?$

匹配:0,100,0.50,0.5,1,1.0,1.15等

相关问题