Recherche d'une chaîne à transmettre à String # matches (String) qui correspond à IPv4, et un autre à IPv6.Quelles sont les expressions régulières Java pour la correspondance des chaînes IPv4 et IPv6?
Répondre
public static final String IPV4_REGEX = "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
public static final String IPV6_HEX4DECCOMPRESSED_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::((?:[0-9A-Fa-f]{1,4}:)*)(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
public static final String IPV6_6HEX4DEC_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}:){6,6})(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z";
public static final String IPV6_HEXCOMPRESSED_REGEX = "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)\\z";
public static final String IPV6_REGEX = "\\A(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\z";
Vous avez ces pages d'un blog. Quelqu'un de bon w/regex devrait être capable de trouver une seule regex pour tous les types d'adresses IPv6. En fait, je suppose que vous pourriez avoir une seule regex qui correspond à IPv4 et IPv6.
Oui, pas quelqu'un doute devrait trouver une seule regex englobante - celles-ci sont loin, beaucoup trop courtes en l'état. –
Merci! Ce sont un bon point de départ. Mais j'ai trouvé que IPV6_HEXCOMPRESSED_REGEX acceptera "1 :: 2: 3: 4: 5: 6: 7: 8", ce qui n'est pas valide puisque vous ne pouvez pas avoir plus de 8 groupements et :: implique plus de groupements compressés . – gusterlover6
est ici une expression régulière pour correspondre aux adresses IPv4:
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
Vous devez les backslashs lorsque vous spécifiez comme une chaîne littérale en Java:
"\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b"
Une autre bonne option pour le traitement IPs utilise les classes Java Inet4Address et Inet6Address, ce qui peut être utile de plusieurs façons, dont l'une est de déterminer la validité de l'adresse IP.
Je sais que cela ne répond pas directement à la question, mais j'ai juste pensé qu'il vaut la peine de le mentionner.
La regex permet l'utilisation de zéros en tête dans les parties IPv4.
Certaines distributions Unix et Mac convertissent ces segments en octals.
Je suggère d'utiliser 25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d
en tant que segment IPv4.
Les expressions régulières pour ipv6 peuvent être très compliquées lorsque vous considérez des adresses avec ipv4 intégré et des adresses compressées.
The open-source IPAddress Java library va valider toutes les représentations standard de IPv6 et IPv4 et prend également en charge la longueur de préfixe (et la validation de telles). Disclaimer: Je suis le chef de projet de cette bibliothèque.
Exemple de code:
try {
IPAddressString str = new IPAddressString("::1");
IPAddress addr = str.toAddress();
} catch(AddressStringException e) {
//e.getMessage has validation error
}
- 1. Quelles sont les bonnes expressions régulières?
- 2. Expressions régulières pour les non-chaînes
- 3. Expressions régulières dans les chaînes Unicode
- 4. expressions régulières: correspondance x fois OU fois
- 5. Quelles sont vos utilisations les plus courantes pour les expressions régulières?
- 6. Comment convertir une adresse IPv4 en IPv6
- 7. Inclure des commentaires dans des expressions régulières Java
- 8. Ressources pour débuter avec les bases IPv4/IPv6 et le développement
- 9. Expressions régulières Analyse lexicale
- 10. expressions régulières et requête XPath
- 11. expressions régulières question
- 12. condition d'utilisation des expressions régulières
- 13. Il y a une fonction pour utiliser la correspondance de modèle (en utilisant des expressions régulières) en C++?
- 14. ASP.NET Routage et expressions régulières
- 15. preuves sur les expressions régulières
- 16. Expressions régulières pour les fonctions de correspondance dans le code source javascript?
- 17. Quelles sont les chaînes vraiment dans .NET?
- 18. Nettoyer les expressions régulières Python
- 19. Liste longue, expressions régulières multiples et performance
- 20. Expressions régulières dans J2ME
- 21. Quelles sont les utilisations intéressantes pour les agents Java?
- 22. expressions régulières et de multiples systèmes d'écriture
- 23. Expressions régulières courantes
- 24. Expressions régulières dans VbScript?
- 25. Expressions régulières en C#
- 26. Comment vérifier si quelqu'un est connecté via IPv6/IPv4
- 27. IPv6 et SoapTcpTransport.GetInputChannel (WSE)
- 28. Ruby expressions régulières
- 29. Comment trouver tous les tags d'image utilisant des expressions régulières
- 30. Grammaire sans contexte décrivant des expressions régulières?
Voir aussi http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses – Flow