允许输入小于1000000(100万)的数字并保留两位小数的最佳RegEx是什么?例如:
有效:
无效
本质上来说,一种货币价值在100万以下。
我想出了以下几点,但是它需要小数点,并且如果要添加小数点,则不需要十进制值:
^[0-9]{1,6}\\.?[0-9]{0,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逻辑来执行此操作以及所有其他数据验证规则。 “少于一百万”只是另一条规则-许多规则之一。