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

- - Dernière réponse : cs_AlexN
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
8 janvier 2014
- 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 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
0
Merci
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
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
0
Merci
Désolé, c'est \\\p{Alnum} et pas \\\p{Alphanum}
Commenter la réponse de cs_Julien39
0
Merci
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
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
0
Merci
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
Merci
genre pour que çà donne çà tu ve dire :

^[wW]{3}\\.\\[^\\.]+\\.\\p{Alpha}{1,4}$
Commenter la réponse de segito
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
0
Merci
Non, pas de \\ devant [

[code=java]^[wW]{3}\\.[^\\.]+\\.\\p{Alpha}{1,4}$
/code
Commenter la réponse de cs_Julien39
0
Merci
wé je vois mais meme avec il faudrais que je le perfectionne
Commenter la réponse de segito
Messages postés
6450
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
0
Merci
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
Merci
tu as raison c'est largement suffisant je dirais merci bcp
Commenter la réponse de segito
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Dernière intervention
8 janvier 2014
0
Merci
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.