Format data yang diperlukan ialah:
1
10
100
1-5
10-50
100-500
0.5
10.5
10.5-20
10.5-20.5.0.5
Iaitu, saiz nombor yang diperlukan untuk pengesahan tidak terhad, ia boleh mempunyai nombor titik terapung atau tidak, ia boleh mempunyai "-" atau tidak, dan satu tempat perpuluhan dikekalkan
Ini adalah ungkapan biasa yang saya tulis:
Salinan berikut adalah salah:
var a=/^\d{1,}\.?\d?-?(\d{1,})?\.?\d?$/;
Dibetulkan kepada:
var a=/^\d{1,}\.?\d{1}?-?(\d{1,})?\.?\d{1}?$/;
Tetapi kenapa 20.5555 sentiasa benar?
/^d{1,}.?d?-?(d{1,})?.?d?$/
匹配过程如下:首先
d{1,}
匹配的是"20";.?
匹配".";d?
匹配"5",?
匹配了1次;-?
匹配"",因为?
匹配0或者1次,在这里匹配0次;(d{1,})?
匹配"555",此时?
匹配1次;.?d?
匹配"",此时两个?
都匹配0次;$
Padan dengan hujung rentetan, jadi "20.5555" boleh sepadan.Kemas kini1: Proses pemadanan
/^d{1,}.?d{1}?-?(d{1,})?.?d{1}?$/
adalah seperti berikut:d{1,}
sepadan dengan "20";.?
sepadan dengan ".";d{1}?
会首先尝试匹配一个数字,此时匹配"5",?
Dipadankan 1 kali;-?
会匹配"",此时?
Dipadankan 0 kali;(d{1,})?
.?
匹配"",此时?
d
, jadi tiada perbezaan antara ungkapan biasa yang dikemas kini dan ungkapan biasa asal.d{1}?
匹配"",?
匹配0次;d{1}
表示数字重复一次,所以该正则和d
???Kenapa guna ungkapan biasa