0

任何人都可以帮助我构建 javscript 正则表达式来验证 6 位数字和 2 个小数位吗?这些例子应该通过测试

0,  0.0,  0.33,  1, 11,  111, 1111, 11111,  111111
1.33, 1.3, 12.33, 12.3, 123.0, 123.33, 1234.0, 1234.11

试过这个:

/^\d{1,4}(\.\d{1,2})?$/ 

但是当按下 .(dot) 时它在 jquery 中失败

4

3 回答 3

3

尝试正则表达式:/^\d{1,6}(\.\d{1,2})?$/。注意:您需要转义点。

如果您需要的是总位数(包括小数点后的位数)最多为 6,那么正则表达式将是:/^(?!.{8,})\d{1,6}(\.\d{1,2})?$/. 该表达式添加了一个负前瞻 ?!.{8,},它将排除那些长度大于 7 的数字。

更新:正如@Christoph 指出的那样,应该排除“01.23”,那么上面的两个表达式应该分别是/^([1-9]\d{0,5}|0)(\.\d{1,2})?$//^(?!.{8,})([1-9]\d{0,5}|0)(\.\d{1,2})?$/

于 2013-01-11T08:15:16.613 回答
1

当您按点时,它后面还没有数字,并且您的正则表达式失败。所以你可以试试这个正则表达式/^\d{1,6}(\.\d{0,2})?$/来允许这种情况,但要注意用户可以输入这样的数字12345.

于 2013-01-11T08:54:26.220 回答
0

DOT 是一个特殊字符,需要转义。您应该使用“\”。

最简单的方法是首先使用适当的 jquery 函数检查字符串的长度是否小于 7(6 位和 1 个点)。这涉及长度。

然后对于正则表达式,您只需要检查它是否最多有 2 个小数位,您可以这样做:/^\d{1,6}(\.\d{1,2})?$/

http://www.regular-expressions.info/dot.html

于 2013-01-11T08:15:46.503 回答