 
                        验证数字,最多精确到小数点后4位
var regNum=/^\d+(\.\d{1,4})$/;
但是
下面两次的结果不同,求教
reg.test(100.)
truereg.test('100.')
false
------------------------------------------分割线----------------------------------------------
不好意思 各位,我这个正则是在网上找的,这个正则好像必须要有小数,后来我自己改了一下,加 了一个?匹配符号
应该是这样:var regNum=/^\d+(\.\d{1,4})?$/;
regNum.test(100.)
trueregNum.test('100.')
false
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
答案有更新
来吧,洒家来解释一下
你最后写出的这个正则是没问题的:
/^\d+(\.\d{1,4})?$/当然,前提是你的题意为:
验证数字,最多精确到小数点后4位那么既然这样,暂且忽略
小数点前的数字是多少,也忽略小数点后每个位置上的数字是几,那答案只有这5种:88.88.888.8888.8888既然是正则匹配,那么所有需要进行匹配的对象,都将会被转成字符串。
所以满足上面那段正则的就是这
5种:"8""8.8""8.88""8.888""8.8888"看到这里没问题吧?
那么接下来我解释一下题主给出的第一个测试:
首先你要知道一件事,
100.它既然没有写上引号,它就是Number类型的,所以它的值其实是100就好比
.2等同于0.2一样那么既然这一点解释通了,你测试的结果也就解释通了。上面这个测试语句可以完全等同于:
这里
100会被转成"100"然后再去进行正则匹配这满足于我上面提到的
"8"这个结构,所以匹配结果是true那么接下来解释一下你的第二个测试:
既然这里是
'100.',是一个字符串,它并不不属于上面我列出的5种之一,所以当然是false啦~不好意思,字快码完了突然被叫去开会。。
希望可以帮到你
XD测试了一下,你的两个应该都返回false的。如果是验证数字,可为小数的话,你的好像必须带小数点。
/^\d+(\.\d{1,4})||$)/
这样可以匹配整数,四位小数。
没加引号的话就是个number,写100、100.、100.0都一样的,转换为字符串都是100,当然能过