Comment puis-je vérifier si une chaîne donnée est une adresse URL valide ?
Ma connaissance en matière d’expressions régulières est basique et ne me permet pas de choisir parmi des centaines d’expressions régulières que j’ai déjà vues sur le web.
Comment puis-je vérifier si une chaîne donnée est une adresse URL valide ?
Ma connaissance en matière d’expressions régulières est basique et ne me permet pas de choisir parmi des centaines d’expressions régulières que j’ai déjà vues sur le web.
L’expression régulière: Version JavaScript
/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/
L’expression régulière: Version PHP
/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\x{00a1}-\x{ffff}][a-z0-9\x{00a1}-\x{ffff}_-]{0,62})?[a-z0-9\x{00a1}-\x{ffff}]\.)+(?:[a-z\x{00a1}-\x{ffff}]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/
L’expression régulière pour vérifier si une chaîne est une URL recommandée (et qui a très bien fonctionné pour moi) est la suivante :
/^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$/
En tant que RegExp JavaScript:
/\b(https?|ftp|file):\/\/[\-A-Za-z0-9+&@#\/%?=~_|!:,.;]*[\-A-Za-z0-9+&@#\/%=~_|]/
Vous pouvez la tester ici:
Il ne s’agit peut-être pas là de faire appel à des expressions régulières, mais plutôt à des méthodes existantes dans le langage que vous avez choisi. Vous souhaiterez probablement utiliser du code existant qui a déjà été écrit, testé et débogué.
En PHP, utilisez la fonction « parse_url() ».
En Perl : utilisez le Module « URI ».
En Ruby : utilisez le Module « URI ».
En .NET : utilisez la classe « Uri ».
Les regex ne sont pas une baguette magique que l’on brandit pour résoudre tous les problèmes impliquant des chaînes de caractères.
Cela permet de vérifier tous les URL:
^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$
live demo: Tester Regex | Outils en ligne