Regex 长度不超过7个字符的正十进制或整数字符串的正则表达式

Regex 长度不超过7个字符的正十进制或整数字符串的正则表达式,regex,Regex,我正在尝试为RegularExpressionValidator控件编写一个正则表达式,该控件将允许具有以下条件的十进制或整数: 不能是负数 没有前导零或尾随零 包括可选小数点在内的最大字符串长度为7个字符 小数点后的最大位数为2 允许一个单独的零 所以这些是好的 0 0.1 0.12 1.34 12.45 123.67 1234.67 12345.7 这些都很糟糕 -0 -0.1 012.4 123.560 123...7 请有人对此提出建议。我已经尝试过几次了,我正在努力解决的主要问

我正在尝试为RegularExpressionValidator控件编写一个正则表达式,该控件将允许具有以下条件的十进制或整数:

  • 不能是负数
  • 没有前导零或尾随零
  • 包括可选小数点在内的最大字符串长度为7个字符
  • 小数点后的最大位数为2
允许一个单独的零

所以这些是好的

0
0.1
0.12
1.34
12.45
123.67
1234.67
12345.7
这些都很糟糕

-0
-0.1
012.4
123.560
123...7

请有人对此提出建议。我已经尝试过几次了,我正在努力解决的主要问题是只检查一个小数点。谢谢

以下正则表达式适用于您:

(?!^0[1-9])(?=^([0-9])+(\.\d{1,2}(?<!0))?$)^.{1,7}$
(?!^0[1-9])(?=^([0-9])+(\.\d{1,2}(?)?

现场演示:这里有另一种方法,不需要看后面:

^(?=.{1,7}$)(0(?=\.|$)|[1-9])\d*(\.\d?[1-9])?$

请参见a

如果
小数点的最大位数为2
那么为什么允许
123.567
呢?很抱歉,这是一个打字错误-小数点后只能有2个字符try 1204-它不匹配,但是should@user9876:谢谢,这是一个很好的观点。我编辑了我的答案。很抱歉,我的好列表中有一个错误。有小数点后只能有两个字符。因此123.567应该在错误列表中。我如何调整解释以满足此标准?@PaulStevens:我在最近的编辑中已经注意到了这一点。请检查rubular链接以查看演示,其中
123.567
不匹配。@anubhava:请帮我解决这个问题。我很抱歉en试图使用正则表达式测试仪来调整这一点,以创建两个新版本,以便应用相同的规则,但其中一个是以米为单位的人类身高字段,因此最大值(小数点后两位)为9.99(最多4个字符),第二个字段是以千克为单位的体重字段,因此最大值(小数点后三位)为999.999(最多7个字符)。