要求的数据格式为:
1
10
100
1-5
10-50
100-500
0.5
10.5
10.5-20
10.5-20.5
10-20.5
也就是要求验证的数字大小不限,可以有浮点数可以没有,可以有“-”可以没有,保留一位小数
这是我写的正则表达式:
下面的复制错了:
var a=/^\d{1,}\.?\d?-?(\d{1,})?\.?\d?$/;
更正为:
var a=/^\d{1,}\.?\d{1}?-?(\d{1,})?\.?\d{1}?$/;
但是20.5555一直为true是咋回事?
PHP中文网2017-06-26 10:59:35
/^d{1,}.?d?-?(d{1,})?.?d?$/
匹配过程如下:
首先d{1,}
匹配的是"20";.?
匹配".";d?
匹配"5",?
匹配了1次;-?
匹配"",因为?
匹配0或者1次,在这里匹配0次;(d{1,})?
匹配"555",此时?
匹配1次;.?d?
匹配"",此时两个?
都匹配0次;$
匹配字符串结尾,所以"20.5555"可以匹配。
Update1:/^d{1,}.?d{1}?-?(d{1,})?.?d{1}?$/
的匹配过程如下:
d{1,}
匹配"20";
.?
匹配".";
d{1}?
会首先尝试匹配一个数字,此时匹配"5",?
匹配1次;
-?
会匹配"",此时?
匹配0次;
(d{1,})?
匹配"555";
.?
匹配"",此时?
匹配"",此时?
匹配0次;
d{1}?
匹配"",?
匹配0次;d{1}?
匹配"",?
匹配0次;d{1}
表示数字重复一次,所以该正则和d
d{1}
表示数字重复一次,所以该正则和d
其实是一样的,所以更新后的正则表达式和原先的正则表达式没有区别。
注:一开始写的匹配过程有点儿问题,现在已经更新。