数字的正则表达式

时间:2010-08-24 23:25:29

标签: regex

请帮我按照以下规则制作正则表达式 -

  1. 最大数量可以是9999.99
  2. 应该是非负面的
  3. 不能为0,但0.01等等有效
  4. 所以,我需要一个介于0.01-9999.99之间的非负数

3 个答案:

答案 0 :(得分:3)

嗯,这对Regexp来说不是一个真正的工作,但无论如何它都适用:

/(\d{2,4}(\.(\d[1-9])|([1-9]\d))?)|[1-9]/

更严格的评估将是:

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

不接受前导零,但只允许一个小数:“0.1”。 请记住,小数是可选的。

但我建议使用数学运算:转换为float然后检查:

if((num > 0) && (num < 100000)) {...}

您可以使用sprintf()来获取所需的表示,例如限制小数位数等。

答案 1 :(得分:2)

为什么需要正则表达式来执行此操作?只需将您的字符串转换为double,然后检查它是否介于0.01和9999.99之间。

答案 2 :(得分:0)

正如人们已经回答的那样,使用[0-9]或\ d可以很容易地获得数字。通过使用{min,max},您可以指定匹配的字符或字符集的数量。

这是一个很好的参考:http://www.regular-expressions.info/reference.html