正则表达式为3小数点

时间:2012-10-03 04:43:54

标签: asp.net regex

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

  1. 最大小数点数为3,但也应接受没有小数点的数字(例如12)
  2. 该值必须至少为0
  3. 该值必须小于或等于99999999999.999
  4. 小数点是DOT(例如2.5,而不是2,5)
  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 Regular Expression Validator

1 个答案:

答案 0 :(得分:14)

这并不困难:

^[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