正则表达式为3小数点

ixo*_*ora 3 regex asp.net

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

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

有效数字样本:

0
2
0.4
78784764.23
45.232
Run Code Online (Sandbox Code Playgroud)

无效数字样本:

-2
123456789522144
84.2564
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一个例子(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})?)$
Run Code Online (Sandbox Code Playgroud)

但是,我仍然有3小数点的问题,它相当不稳定.任何人都可以帮我这个,因为在谈到正则表达式时我基本上是文盲吗?

谢谢.

编辑: 我正在使用ASP Regular Expression Validator

Tim*_*ker 14

这并不困难:

^[0-9]{1,11}(?:\.[0-9]{1,3})?$
Run Code Online (Sandbox Code Playgroud)

说明:

^            # 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
Run Code Online (Sandbox Code Playgroud)

  • 那个正则表达式[绝对有用](https://gist.github.com/3826240)与`54.866`在这里. (2认同)
  • @ixora:蒂姆的正则表达式完美无缺.你问题中的正则表达式在你描述的方式上失败了.顺便说一下,你的改编正则表达式如此复杂的原因是因为原版不允许前导零而且它*允许减号(两者都不是规定的要求)并且它必须匹配"200"或"200.00" `但不是'200.01`或'200.99`.你的情况要简单得多. (2认同)