要求的資料格式為:
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次,在這裡匹配00 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}
表示數字重複一次,所以該正則和d
其實是一樣的,所以更新後的正則表達式和原先的正規表示式沒有差別。
註:一開始寫的配對過程有點兒問題,現在已經更新。