Đối với số từ 0 đến 255, tôi sử dụng regex này:
(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))
Trên regex sẽ khớp với số nguyên từ 0 đến 255, nhưng không khớp với 256.
Vì vậy, đối với IPv4, tôi sử dụng regex này:
^(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})$
Nó nằm trong cấu trúc này: ^(N)((\.(N)){3})$
trong đó N là regex được sử dụng để khớp số từ 0 đến 255.
Regex này sẽ khớp với IP như bên dưới:
0.0.0.0
192.168.1.2
nhưng không phải những người dưới đây:
10.1.0.256
1.2.3.
127.0.1-2.3
Đối với IPv4 CIDR (Định tuyến liên miền không phân lớp), tôi sử dụng regex này:
^(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))$
Nó nằm trong cấu trúc này: ^(N)((\.(N)){3})\/M$
trong đó N là regex được sử dụng để khớp với số từ 0 đến 255 và M là regex được sử dụng để khớp với số từ 0 đến 32.
Regex này sẽ khớp với CIDR như dưới đây:
0.0.0.0/0
192.168.1.2/32
nhưng không phải những người dưới đây:
10.1.0.256/16
1.2.3./24
127.0.0.1/33
Và đối với danh sách IPv4 CIDR, "10.0.0.0/16", "192.168.1.1/32"
tôi sử dụng regex này:
^("(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))")((,([ ]*)("(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})\/(([0-9])|([12][0-9])|(3[0-2]))"))*)$
Nó nằm trong cấu trúc này: ^(“C”)((,([ ]*)(“C”))*)$
trong đó C là regex được sử dụng để khớp với CIDR (như 0.0.0.0/0).
Regex này sẽ khớp với danh sách CIDR như bên dưới:
“10.0.0.0/16”,”192.168.1.2/32”, “1.2.3.4/32”
nhưng không phải những người dưới đây:
“10.0.0.0/16” 192.168.1.2/32 “1.2.3.4/32”
Có lẽ nó có thể ngắn hơn nhưng đối với tôi, nó rất dễ hiểu đối với tôi.
Hy vọng nó giúp!
ping 2130706433
vàping 127.1
cho một tiếng cười khúc khích.