Jump to content

Expression Régulière


Recommended Posts

Bonjour,

Je travaille actuellement en Dotnet.

Je cherche le moyen de contrôler la validité d'une url en retournant True ou False :

www.google.fr = True

images.google.fr = True

test.php = False

test.test.php = False

Quelqu'un aurait il ca sous la main?

Merci :)

Portekoi

Link to post
Share on other sites

Salut, tu cherche la regex en elle même ou une façon de faire ?

tu utilise quel langage en dotnet ?

sous c# tu peut faire une regex en faisant un "using System.Regularexpression"

ensuite tu test si la valeur entré correspond à une regex.

Voici comment je fais pour ma part :

Regex r = new Regex("http://([\\w-]+\\.)+[\\w-]+");
mc = r.Matche(codeSource);

http://([\\w-]+\\.)+[\\w-]+

, cherche la correspondance en testant tout les format d'url existant

remplate "codeSource" par zonedesaisie.text par exemple

une autre variante trés "primitive" serait :

@([http://]?)@([www.]?)(.*)@((.)(fr|info|com|org|net|asso)(/?))

Edited by Kent
Link to post
Share on other sites

l'instruction "?" te permet de rendre le groupe facultatif :

exemple :

http://([\\w-]+\\.)+[\\w-]+

deviendré

([http://]?)([\\w-]+\\.)+[\\w-]+

Essai comme ça :)

Link to post
Share on other sites

marche pas non plus :(


Function ISlinKExternal1(ByVal Url As String, ByVal Hostname As String)
Dim page As String

page = "http://" & LCase(Trim(Mid(Url, InStrRev(Url, "/") + 1)))

Dim objIntPattern As New System.Text.RegularExpressions.Regex("([http://]?)([\\w-]+\\.)+[\\w-]+")
MsgBox(objIntPattern.IsMatch(page).ToString & " - " & page)
Return objIntPattern.IsMatch(Url)
End Function

Link to post
Share on other sites

l'erreur se situe à quel niveau ? une exception ?

C'est la regex qui est incorrecte ?

Je viens de retrouver une vieille regex un peu basic mais tu peut toujours l'essayé :


/>http://(www.([a-zA-Z0-9]*|[-_]*)|([a-zA-Z0-9]*|[-_]*))(.net|.fr|.com|.net/|.fr/|.com/)

Edited by Kent
Link to post
Share on other sites

page = "http://" & LCase(Trim(Mid(Url, InStrRev(Url, "/") + 1)))

Peut-être à cause de ça tu enleve le dernier aslash ? tu y fais quoi je saisi pas bien

Quand tu mets les http:// et que tu test avec cette regex

http://([\\w-]+\\.)+[\\w-]+

ça donne quoi ?

Edited by Kent
Link to post
Share on other sites

Je crois qu'il vas falloir effectué les procedure de deboguage savoir si ça viens de la regex ou avant

fais un pas à pas.

verifie le contenu de page si tu as bien le nom de domaine uniquement. Ainsi tu vérifiera s'il a bien la forme d'une url.

isMatch ne te retourne pas true si la forme n'a effectivement pas de correspondance avec la regex.

En clair vérifie la forme de page apres tes Lcase Mid et Trim

Sinon essaie celle-ci

^(http://|https://){0,1}[A-Za-z0-9][A-Za-z0-9\-\.]+[A-Za-z0-9]\.[A-Za-z]{2,}[\43-\176]*$

Trouvé ici

* Function ValidationURL(url)

* Dim modele

* set modele = New RegExp

* modele.pattern = "^(http://|https://){0,1}[A-Za-z0-9][A-Za-z0-9\-\.]+[A-Za-z0-9]\.[A-Za-z]{2,}[\43-\176]*$"

* modele.global = true

* ValidationURL = modele.test(url)

* End Function

C'est de l'asp mais les formats de regex sont les mêmes (microsoft oblige)

Edited by Kent
Link to post
Share on other sites

Page contient "www.google.fr" puis "test.test.php" par exemple

Je me rends compte que c'est quasi-impossible à faire. J'ai arpenté pas mal de site et je n'ai rien trouvé...

Pas grave, on va faire autrement :)

Merci en tout cas

Link to post
Share on other sites

Bonsoir,

Deux idées me viennent à l'esprit en lisant ce topic.

1- Faire un test sur ce qui se situe après le deuxième point et vérifier si l'extension appartient à une liste d'extensions que tu as identifiées comme nom de domaine : .fr . com etc.

2 - Envoyer une requête sur éventuel domaine puis voir si il répond correctement.

Link to post
Share on other sites

Bonjour,

1 - Oui je me suis dis que j'allais faire comme ca mais comme c'est pour un logiciel, je vais me retrouver coincer s'il y a une nouvelle extension

2 - J'ai aussi essayé. J'ai trouve HttpWebRequest.

A voir :)

Merci

Portekoi

Link to post
Share on other sites

Rebonjour , voici un coup de main pour httpWebRequest


public static string ouvrirUrl(string url)
{
HttpWebResponse HttpWResponse = null;
StreamReader sr = null;
try
{
HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();
// Tu peut ici testé si HttpWResponse retourne quelque chose different de null
}
catch (Exception ex)
{
string Erreur = "Impossible d'éffectuer l'operation : " + ex.ToString();
return Erreur;
}

Link to post
Share on other sites

Et bien ca continue...

Voici mon code :


Try
'Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name.
Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create("http://monserveur/damien/url/index.html"), HttpWebRequest)

'Get the associated response for the above request.
Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
myHttpWebResponse.Close()
Catch f As WebException
Console.WriteLine(f.Message & "<--")

If f.Status = WebExceptionStatus.ProtocolError Then
Console.WriteLine("Status Code : {0}", CType(f.Response, HttpWebResponse).StatusCode)
Console.WriteLine("Status Description : {0}", CType(f.Response, HttpWebResponse).StatusDescription)
End If

Catch f As Exception
Console.WriteLine(f.Message & "<--")
End Try

Mais j'ai cette erreur lors de l'exécution :

Une exception de première chance de type 'System.Net.WebException' s'est produite dans System.dll

EDIT : Apparemment, il me renvoie une erreur 401 pour mon site et avec google, j'ai une erreur de type 407 (proxy). Je pense savoir d'où sa viens :)

Link to post
Share on other sites

Re,

J'ai ajouté ceci et tout fonctionne maintenant :

Dim myHttpWebRequest As HttpWebRequest
myHttpWebRequest = CType(WebRequest.Create("http://www.google.fr"), HttpWebRequest)

myHttpWebRequest.Proxy = System.Net.WebProxy.GetDefaultProxy
myHttpWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials

Link to post
Share on other sites

Tu peut donc maintenant évaluer la validité d'une url tout simplement si elle reponds à une requette http plutôt que dans sa syntaxe ?

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...