J'ai une expression régulière pour les adresses IPv6 comme indiqué ci-dessousexpression régulière pour adresses IPv6
IPV4ADDRESS [ \t]*(([[:digit:]]{1,3}"."){3}([[:digit:]]{1,3}))[ \t]*
x4 ([[:xdigit:]]{1,4})
xseq ({x4}(:{x4}){0,7})
xpart ({xseq}|({xseq}::({xseq}?))|::{xseq})
IPV6ADDRESS [ \t]*({xpart}(":"{IPV4ADDRESS})?)[ \t]*
Il est correctement tous les formats d'adresses IPv6, y compris
1) non-compressed IPv6 addresses
2) compressed IPv6 addresses
3) IPv6 addresses in legacy formats.(supporting IPv4)
exemples idéaux d'adresses IPv6 dans des formats existants Par opposition à 8 groupes dans les adresses IPv6 normales.C'est parce que
2001:1234::3210:5.6.7.8
OR
2001:1234:1234:5432:4578:5678:5.6.7.8
As you can see above there are 10 groups separated by either `":" or ".".`
les 4 derniers groupes qui sont séparés par `". " devrait être compressé en 32 bits les moins significatifs des adresses IPv6. D'où nous avons besoin de 10 groupes pour satisfaire 128 bits.
si j'utilise le format d'adresse suivante
2001:1234:4563:3210:5.6.7.8
Ici, chaque groupe séparés par ":" représente 16-bits.the quatre derniers groupes separted par "" représente 8 bits.Le nombre total de bits est 64 + 32 = 96 bits. 32 bits sont manquants
L'expression régulière l'accepte comme un format d'adresse IPv6 valide.Je n'arrive pas à comprendre comment corriger l'expression régulière jeter ces valeurs.Toute aide est très appréciée.
Pourriez-vous expliquer ce qui ne va pas avec l'exemple négatif fourni? –
il est expliqué ci-dessus l'exemple. Chaque groupe séparé par ":" représente 16 bits. Les quatre derniers groupes séparés par "." représente 8 bits. Le nombre total de bits est 64 + 32 = 96 bits. 32 bits sont manquants. – liv2hak
Eh bien, il accepte aussi des absurdités telles que: 0: 999.999.999.999. – nneonneo