VERIFIER LA VALIDITE D'UN URL [Résolu]

segito - 23 janv. 2013 à 23:23 - Dernière réponse : cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention
- 24 janv. 2013 à 15:12
Bonjour, bah je voudrais vérifier la validité d'une URL en java

et pour cela j'ai pensé a utilider les expressions regulières et crée une fonction


public boolean isGoodUrl(String url) {
Pattern p = Pattern.compile("^w{3}(.){1}[a-z0-9|A-Z0-9]+\\.[A-Z]{1,4}$");
Matcher m = p.matcher(url.toUpperCase());
return m.matches();

}

mais çà ne marche pas .....

quelqu'un peut-il m'aider ?
Afficher la suite 

11 réponses

Répondre au sujet
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 24 janv. 2013 à 08:36
+3
Utile
La fonction, c'est donc ca :

   public boolean isGoodUrl(String url) { 
      Pattern p = Pattern.compile("^[wW]{3}\\.\\p{Alanum}+\\.\\p{Alpha}{1,4}$"); 
      Matcher m = p.matcher(url); 
      return m.matches(); 
   } 


Par contre, les url du type "www.javafr.com/forum/sujet-VERIFIER-VALIDITE-URL_1623882.aspx" seront considérées comme mauvaises.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 24 janv. 2013 à 08:29
0
Utile
Salut,

C'est un problème avec ton expression régulière. Pourquoi as tu fais un capturing sur le . : (.) ?

^[wW]{3}\\.\\p{Alphanum}+\\.\\p{Alpha}{1,4}$


Avec ca, tu n'as pas besoin de passer ton url en majuscule

NB :
- p{Alphanum}=[a-z0-9A-Z]
- p{Alpha})=[a-zA-Z]
- {1} : ca ne sert à rien
Commenter la réponse de cs_Julien39
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 24 janv. 2013 à 08:34
0
Utile
Désolé, c'est \\\p{Alnum} et pas \\\p{Alphanum}
Commenter la réponse de cs_Julien39
0
Utile
merci ça fonctionne ..

bah pour ces urls la je vais ajouter des modèles dans l'expression
pour l'instant je suis dan la phase teste
Commenter la réponse de segito
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 24 janv. 2013 à 08:52
0
Utile
Et attention, tu peux également avoir des _ ou des - qui ne sont pas des caractères alphanumériques.

Le mieux est peut être de ne pas préciser le type de caractère : [^\\.] serait peut être le plus approprié.
Commenter la réponse de cs_Julien39
0
Utile
genre pour que çà donne çà tu ve dire :

^[wW]{3}\\.\\[^\\.]+\\.\\p{Alpha}{1,4}$
Commenter la réponse de segito
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 24 janv. 2013 à 09:11
0
Utile
Non, pas de \\ devant [

[code=java]^[wW]{3}\\.[^\\.]+\\.\\p{Alpha}{1,4}$
/code
Commenter la réponse de cs_Julien39
0
Utile
wé je vois mais meme avec il faudrais que je le perfectionne
Commenter la réponse de segito
cs_Julien39 6449 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 15 mars 2018 Dernière intervention - 24 janv. 2013 à 09:27
0
Utile
En effet.

Pour un truc pas trop mal, tu peux déjà utiliser ca :

^[wW]{3}\\.[^\\.]+\\.\\p{Alpha}{1,4}/*.*$


Et là, tu as déjà quelque chose de pas trop mal.
Commenter la réponse de cs_Julien39
0
Utile
tu as raison c'est largement suffisant je dirais merci bcp
Commenter la réponse de segito
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 24 janv. 2013 à 15:12
0
Utile
Salut,

L'IETF/RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt) propose une regex "officielle". Au paragraphe "B. Parsing a URI Reference with a Regular Expression", voici l'expression proposée :

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?

qui se résout ainsi :
Exemple : http://www.ics.uci.edu/pub/ietf/uri/#Related
Qui devient :

$1 = http:
$2 = http
$3 = //www.ics.uci.edu
$4 = www.ics.uci.edu
$5 = /pub/ietf/uri/
$6 $7
$8 = #Related
$9 = Related
Commenter la réponse de cs_AlexN

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.