Ce code sert:
1- à valider un URL (ftp,ftps,http,https) et
2- pour le cas ou l'URL fourni par l'utilisateur est valide, à extraire toute les composantes de l'URL.
OBJET NÉCESSAIRE
Afin de faire fonctionner et tester rapidement le code source soumis, vous avez simplement besoin des éléments suivants:
Un Textbox devant servir à recevoir l'URL à valider.
Un Textbox ou Label pour chacune des composantes de l'URL que vous désirez voir afficher(Pour les fins du test, je vous conseil de prévoir 9 textbox ou label).
Un Bouton de commande pour lancer le test (Placer le code source soumis sous l'évènement click de ce bouton).
PETITE PROGRAMMATION NÉCESSAIRE
Dans le code source soumis, vous allez voir 9 variables de type string. Afin de voir afficher le contenu de ces variables vous n'avez qu'à associer votre textbox ou label correrspondant, exemple:
MonTextboxUSERNAME.text = MyUserName
MonTextboxPort.text = MyPort
NOTES FINALES
a) Sauf pour la partie Ip adresse ou Host Name, tous les autres composantes de l'URL sont optionneles. Voici des exemples d'URL valides:
187.25.0.89.87
ftp://187.25.0.89.87
http://www.microsoft.com
ftp://username:mon@email.ca@187.25.0.89.87:21/repertoire/fichier.zip
b) Comme certaines composantes sont optionneles, certaines variables n'auront aucun contenus si l'URL soumis n'a pas la valeur correspondante.
Exemple:
ftp://187.25.0.89.87
La variable MyScheme aura ftp comme valeur car un scheme à été soumis, la variable MyIpAddress aura 187.25.0.89.87 comme valeur car une adresse IP à été fournis.
Toutes les autres variables n'auront aucune valeur. Aussi il serait bon de prévoir des valeurs par défaut pour les parties optionneles dans l'URL.
C) Le code distingue entre une adresse Ip valide (entre 0.0.0.0 et 255.255.255.255) et un Host Name et insert la valeur dans la variable MyHostInfo.
exemple1
255.255.255.255
La variable MyHostInfo = 255.255.255.255
La variable MyIpAddress = 255.255.255.255
Pour la variable MyHostName il n'y aura aucune valeur.
exemple2
255.255.255.256 (Ce n'est pas une adresse ip valide mais peut être un Host Name)
La variable MyHostInfo = 255.255.255.256
Pour la variable MyIpAddress il n'y aura aucune valeur.
La variable MyHostName = 255.255.255.256
Source / Exemple :
'A faire par vous:
' 1- code pour réinitialiser les variables entre chaque test sinon vous risquez d'avoir des variables comportant des valeurs
' du test précédent.
'
' 2- Prévoir des valeurs par défaut à vos variables.
'3- Est il utile de préciser qu'étant donné que nous utilisons un regex, vous devez vous assurer d'importer la
'classe Text.RegularExpressions (Imports System.Text.RegularExpressions)
'ATTENTION le Dim r As New Regex apparait originalement sur une seule ligne de code. J'ignore si ici il
'va apparaitre sur une seule ligne. Sinon, faite les modifications nécessaire si le code apparait sur plusieurs ligne dans votre
'programme.
Dim r As New Regex("^((?<Scheme>(f|ht)tps?)://)?(?<UserInfo>((?<UserName>[\w\-\@\.]+)\:?((?<Pass>[\w\-\@\.]+))?)\@)?(?<HostInfo>(?<IpAddress>(([01]?\d{1,2}|2[0-4]?\d|25[0-5])\.){3}([01]?\d{1,2}|2[0-4]?\d|25[0-5]))|(?<HostName>([\w\-]+\.)+([\w\-]{2,3})))(\:(?<Port>(\d)+))?\/?(\/(?<Path>[\w\-\/\.\s]+))?$")
Dim m As Match = r.Match(TextboxUrlAValider.text)
If r.IsMatch(TextboxUrlAValider.text) Then
Dim MyScheme As String = m.Groups("Scheme").Value
Dim MyUserInfo As String = m.Groups("UserInfo").Value
Dim MyUserName As String = m.Groups("UserName").Value
Dim MyPass As String = m.Groups("Pass").Value
Dim MyHostInfo As String = m.Groups("HostInfo").Value
Dim MyIpAddress As String = m.Groups("IpAddress").Value
Dim MyHostName As String = m.Groups("HostName").Value
Dim MyPort As String = m.Groups("Port").Value
Dim MyPath As String = m.Groups("Path").Value
Else
MsgBox("URL incomplet ou non supporté!", MsgBoxStyle.OKOnly, "Erreur")
End If
Conclusion :
Pour plus de détails concernant ce code, faites en la demande dans vos commentaires.
Merci.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.