我需要这个正则表达式允许0,0.00或00.00

时间:2014-06-30 22:30:07

标签: regex

我知道关于正则表达式有很多问题,但我从来没有真正能够了解这些是如何工作的。

这是我的正则表达式:

(?!^0*$)(?!^0*\.0*$)^\d{0,10}(\.\d{1,2})?$

仅适用于数值,最多两位小数。

我正在寻找答案,但更具体地说,是什么让我能够更好地理解它。我需要能够匹配0,0.00。或者这个表达式中的00.00。

谢谢。

3 个答案:

答案 0 :(得分:2)

删除前两组括号,只需将其设为:

^\d{0,10}(\.\d{1,2})?$

这说:

^           -- start of line
\d{0,10}    -- 0 - 10 digits
(
  \.\d{1,2} -- a dot followed by 1 or 2 digits
)?          -- make the dot and 2 digits optional
$           -- end of line

至于被删除的两个:

(?!^0*$)     -- do not allow all zeros (0000000)
(?!^0*\.0*$) -- do not allow all zeros with a dot in the middle (0000.0000)

(?!          -- "negative lookahead", e.g. "Do not allow"
  ^          -- start of line
  0*         -- any number of zeros
  $          -- end of line
)

答案 1 :(得分:0)

这是一个模式,并在Python中检查

import re

nums = ['0', '0.00', '00.00']

# match one or two zeros
# After, there's an optional block: a period, with 1-2 zeros
pat = re.compile('0{1,2}(\.0{1,2})?')

print all( (pat.match(num) for num in nums) )

输出

True

答案 2 :(得分:0)

试试这个

\ d {1,3}(。)\ d {1,2}

\ d {1,3}。\ d {2}