任何人都可以帮我构建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中失败
答案 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})?$/