要求的資料格式為:
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是咋回事?
/^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
其實是一樣的,所以更新後的正則表達式和原先的正規表示式沒有差別。註:一開始寫的配對過程有點兒問題,現在已經更新。
雷雷
???為啥要用正規