验证数字,最多精确到小数点后4位
var regNum=/^\d+(\.\d{1,4})$/;
但是
下面两次的结果不同,求教
reg.test(100.)
true
reg.test('100.')
false
------------------------------------------分割线----------------------------------------------
不好意思 各位,我这个正则是在网上找的,这个正则好像必须要有小数,后来我自己改了一下,加 了一个?匹配符号
应该是这样:var regNum=/^\d+(\.\d{1,4})?$/;
regNum.test(100.)
true
regNum.test('100.')
false
答案有更新
来吧,洒家来解释一下
你最后写出的这个正则是没问题的:
/^\d+(\.\d{1,4})?$/
当然,前提是你的题意为:
验证数字,最多精确到小数点后4位
那么既然这样,暂且忽略
小数点前
的数字是多少,也忽略小数点后
每个位置上的数字是几,那答案只有这5
种:8
8.8
8.88
8.888
8.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