正则表达式的范围> = 0但小于1000

时间:2012-02-23 10:20:10

标签: regex

我正忙着做这件事,以为我会把它放在那里。

必须是最多3个单位且最多5个小数位等的数字

有效

  • 999.99999
  • 99.9
  • 9
  • 0.99999
  • 0

无效

  • -0.1
  • 999.123456
  • AAA
  • AAA.99999

编辑需要大于或等于零。

5 个答案:

答案 0 :(得分:13)

根据您最近对问题所做的更改,这里有一个更新的正则表达式,它将匹配所有> = 0和< 1000

^\d{1,3}(?:\.\d{1,5})?$
  ^\___/ \/ ^\/\___/ |
  |  ^   ^  | |  |   `- Previous is optional (group of dot and minimum 1 number between 0-9 and optionally 4 extra numbers between 0-9)
  |  |   |  | |  `- Match 1-5 instances of previous (single number 0-9)
  |  |   |  | `- Match a single number 0-9
  |  |   |  `- The dot between the 1-3 first number(s) and the 1-5 last number(s).
  |  |   `- This round bracket should not create a backreference
  |  `- Match 1-3 instances of previous (single number 0-9)
  `- Match a single number 0-9

^是行首,$是行尾。

有效

  • 999.99999
  • 999.0
  • 999
  • 99.9
  • 99.0
  • 99
  • 9
  • 0.1
  • 0.01
  • 0.001
  • 0.0001
  • 0.99999
  • 0.01234
  • 0.00123
  • 0.00012
  • 0.00001
  • 0.0
  • 0.00000
  • 0
  • 000.00000
  • 000

无效

  • -0.1
  • 999.123456
  • AAA
  • AAA.99999
  • 0
  • 0.123

答案 1 :(得分:1)

/\d{1,3}(\.\d{1,5})?\b/  # the boundary \b prevents matching numbers after the max of 5

编辑:快速搜索显示,像往常一样,有一个CPAN模块。

Regexp::Common::number

@ohaal正确地指出这也将匹配0,这是无效的。我建议将此正则表达式与匹配值大于0的测试结合起来。

另见http://www.perlmonks.org/?node_id=614452

答案 2 :(得分:1)

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

接受 999.99999 99.9 9 0.99999

拒绝 -0.1 999.123456 AAA AAA.99999 0

答案 3 :(得分:0)

结帐http://www.regular-expressions.info/numericranges.html 关于赞成和反对的数字和讨论有很多例子 不同的方法。

答案 4 :(得分:0)

由@ohaal回答,价格为$ 0.00-$ 999.99

Regex $0.00 - $999.99

ok