Per il numero da 0 a 255 utilizzo questa regex:
(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))
L'espressione regolare sopra corrisponderà al numero intero compreso tra 0 e 255, ma non corrisponderà a 256.
Quindi per IPv4 uso questa regex:
^(([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})$
È in questa struttura: ^(N)((\.(N)){3})$
dove N è la regex usata per abbinare il numero da 0 a 255.
Questa regex corrisponderà a IP come di seguito:
0.0.0.0
192.168.1.2
ma non quelli di seguito:
10.1.0.256
1.2.3.
127.0.1-2.3
Per IPv4 CIDR (Classless Inter-Domain Routing) utilizzo questa regex:
^(([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]))$
È in questa struttura: ^(N)((\.(N)){3})\/M$
dove N è la regex utilizzata per abbinare il numero da 0 a 255 e M è la regex utilizzata per abbinare il numero da 0 a 32.
Questa regex corrisponderà a CIDR come di seguito:
0.0.0.0/0
192.168.1.2/32
ma non quelli di seguito:
10.1.0.256/16
1.2.3./24
127.0.0.1/33
E per l'elenco di CIDR IPv4 come "10.0.0.0/16", "192.168.1.1/32"
io uso questa regex:
^("(([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]))"))*)$
È in questa struttura: ^(“C”)((,([ ]*)(“C”))*)$
dove C è la regex usata per abbinare CIDR (come 0.0.0.0/0).
Questa regex corrisponderà all'elenco di CIDR come di seguito:
“10.0.0.0/16”,”192.168.1.2/32”, “1.2.3.4/32”
ma non quelli di seguito:
“10.0.0.0/16” 192.168.1.2/32 “1.2.3.4/32”
Forse potrebbe accorciarsi ma per me è facile da capire così bene da me.
Spero che sia d'aiuto!
ping 2130706433
eping 127.1
per una risatina.