我需要一个正则表达式,允许任何大于0的数字,带或不带小数,并允许一个或两个小数位。
我发现以下\d+\.?\d{1,2}
适用于除0-9之外的所有内容。
怎么了?我的印象是\d+
应该代表任何长度为1位或更多位数的[0-9]字符。
答案 0 :(得分:2)
我认为这可行 -
# [1-9]\d*(?:\.\d{0,2})?
[1-9] \d* # any number greater than 0
(?: \. \d{0,2} )? # with or without a decimal and/or 1 or two places
答案 1 :(得分:0)
在阅读了一些评论后,我意识到了我的问题的解决方案。我的正则表达式中至少需要两个十进制字符。
最容易通过将正则表达式分解为三个部分来解释。
\d+
表示。这种模式告诉我允许
任何[0-9]字符,必须有1个或多个字符。\.?
表示。\d{1,2}
。这个
pattern表示需要1或2个十进制字符[0-9]。自从我
想要小数位数是可选的正确的
这个模式应该是\d{0,2}
,表示我可以有0,
1或2个十进制字符[0-9]。由于第一部分需要至少一个字符而第三部分需要1或2,因此我在整个正则表达式模式中要求至少2个字符,因此,只有一个字符(即0-9)的任何内容都无效。更新的模式为\d+\.?\d{0,2}
,并且正确地允许我想要的所有值。