Regex between 1.00 and 99.00
我需要找到一个只允许在1.00和99.00之间输入的正则表达式,所以低于1.00和大于99.00的内容是不可接受的。
- 副本:https://stackoverflow.com/questions/26958458/can we validate‌&8203;-min-and-max-value-f‌&8203;or-a-floating-number‌&8203;-using regexp
- regex不是适合该工作的工具。您可以使用regex检查字符串是否看起来像一个数字,然后从中提取数值,并将该值与可接受范围的限制进行比较。
- 因此,低于1.00且大于90.00是不可接受的。你说的第二句话是99.00还是第一句话是90.00?
- 这个问题究竟是如何获得2票赞成票的?!
- 不要。只是不要。double n; if (double.TryParse("99.0", out n) && n >= 1.0 && n <= 99.0) Console.WriteLine("Valid.");有什么问题?没有人能够理解和维护这个regex。当有效范围必须更改时,您将做什么?回到stackoverflow,再问同样的问题?
regex不适合这种验证,因为如果这样的话,那么涉及的规则太多了。不过,这种模式是可行的。
^(?:[1-9]\.\d{2}|[1-8]\d\.\d{2}|9[0-8]\.\d{2}|99.00)$
在0.00和99.99之间的所有10000个可能值中都进行了测试。
如果您也需要接受整数:
1
| ^(?(?=99)99(\.0+)?|([1-9]\d?(\.\d+)?))$ |
现场演示
- 但接近99.01失败
- 99.01应该失败了
- 是的范围应该是1.00到99.00
- 这不是答案。这与90年代的任何值都不匹配,99.00除外。它不匹配90.00-98.99之间的任何值
- 你好。我还需要它来接受数字的第一部分和小数点。10。
试试这个-这将是1比90
工作小提琴