4

我需要一个满足这些规则的正则表达式:

  1. 小数点的最大位数为 3,但也应接受没有小数点的数字(例如 12)
  2. 该值必须至少为 0
  3. 该值必须小于或等于 99999999999.999
  4. 小数点是 DOT(例如 2.5,而不是 2,5)

有效数字示例:

0
2
0.4
78784764.23
45.232

无效号码示例:

-2
123456789522144
84.2564

我在这里找到了一个示例(http://forums.asp.net/t/1642501.aspx)并设法对其进行了一些修改,使最小值为 0,最大值为 99999999999.999,并且只接受 DOT 作为小数点。这是我修改后的正则表达式:

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

但是,我仍然对小数点后 3 位有疑问,而且它相当不稳定。任何人都可以帮助我,因为我在正则表达式方面基本上是文盲?

谢谢。

已编辑: 我正在使用 ASP 正则表达式验证器

4

1 回答 1

19

这并不难:

^[0-9]{1,11}(?:\.[0-9]{1,3})?$

解释:

^            # Start of string
[0-9]{1,11}  # Match 1-11 digits (i. e. 0-99999999999)
(?:          # Try to match...
 \.          # a decimal point
 [0-9]{1,3}  # followed by one to three digits (i. e. 0-999)
)?           # ...optionally
$            # End of string
于 2012-10-03T05:15:26.677 回答