VERIFIER LA VALIDITE D'UN URL

Résolu
segito - 23 janv. 2013 à 23:23
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre 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 ?

11 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
24 janv. 2013 à 08:36
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.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
24 janv. 2013 à 08:29
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
24 janv. 2013 à 08:34
Désolé, c'est \\\p{Alnum} et pas \\\p{Alphanum}
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
24 janv. 2013 à 08:52
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é.
0
genre pour que çà donne çà tu ve dire :

^[wW]{3}\\.\\[^\\.]+\\.\\p{Alpha}{1,4}$
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
24 janv. 2013 à 09:11
Non, pas de \\ devant [

[code=java]^[wW]{3}\\.[^\\.]+\\.\\p{Alpha}{1,4}$
/code
0
wé je vois mais meme avec il faudrais que je le perfectionne
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
24 janv. 2013 à 09:27
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.
0
tu as raison c'est largement suffisant je dirais merci bcp
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
24 janv. 2013 à 15:12
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
0
Rejoignez-nous