我用什么正则表达式指定小于1000000的数字?

时间:2018-11-05 15:16:16

标签: regex

允许输入小于1000000(100万)的数字并保留两位小数的最佳RegEx是什么?例如:

有效:

  • 1
  • 1.10
  • 999999.99(最大)
  • 0.50

无效

  • 1.5
  • 1。
  • 1000000

本质上来说,一种货币价值在100万以下。

我想出了以下几点,但是它需要小数点,并且如果要添加小数点,则不需要十进制值:

^[0-9]{1,6}\\.?[0-9]{0,2}$

2 个答案:

答案 0 :(得分:1)

您可以尝试一下。 ^(\d|[1-9]\d{1,5})(\.\d{2})?$匹配1百万以下的任意数字,并带有两个可选的小数位。将不匹配前导零。

https://regex101.com/r/Hz1b3G/1

如果允许前导零,请使用此^0*\d{1,6}(\.\d{2})?$

答案 1 :(得分:0)

在输入值之后,我会回应您应该使用编程语言对此进行检查的观点。

这样的要求当然可以通过“ 1-6位可选,后跟一个小数点和另外两位”来满足,但在我看来,“使用正则表达式并不适合”,因为足够多的业务将提出这一要求的转折,这将使这种方法无效。如果不是(如果不是这样的话)发生这种情况,您会后悔尝试过这种方式。

使用正则表达式确保输入的内容为“数字”,但不检查该数字的特征。在应用程序中其他位置使用if / then / else逻辑来执行此操作以及所有其他数据验证规则。 “少于一百万”只是另一条规则-许多规则之一。