带小数位的数字的正则表达式

时间:2013-01-11 08:08:59

标签: javascript regex

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

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})?$/ 

但是当按下(点)时,它在jquery中失败

3 个答案:

答案 0 :(得分: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})?$/

答案 1 :(得分:1)

当您按下dot时,它之后没有数字,并且您的正则表达式失败。因此,您可以尝试使用此正则表达式/^\d{1,6}(\.\d{0,2})?$/来允许这种情况,但请注意,用户可以输入这样的数字12345.

答案 2 :(得分:0)

DOT是一个特殊角色,需要进行转义。你应该使用“\。”

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

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

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