IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

expression reguliere pour url


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    informatique
    Inscrit en
    Avril 2013
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 280
    Billets dans le blog
    1
    Par défaut expression reguliere pour url
    Bonjour à tous;
    je voudrais une expression regulière qui teste si n'importe quelle url est bien formée ou pas.
    j'utilisais cette expression expression mais elle fonctionne pas pour tous les url.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     String urlPattern= "^(http://|https://|HTTP://|HTTPS://|href='|href=\"|HREF=\"|ftp://|file://)?(www.)?([a-zA-Z0-9]+).[a-zA-Z0-9]*.[a-z]{3}.?([a-z]+)?$";
    quand je teste ces url, ça ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String url="ftp://ftp.rfc-editor.org/in-notes/rfc2396.txt";
    etc
    merci de votre aide

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par pekre Voir le message
    Bonjour à tous;
    je voudrais une expression regulière qui teste si n'importe quelle url est bien formée ou pas.
    Bon courage, je ne suis même pas sur que tu en trouvera une valide sur internet, c'est comme les regexp de validation d'email, il y a toujours des problèmes avec.
    Citation Envoyé par pekre Voir le message
    j'utilisais cette expression expression mais elle fonctionne pas pour tous les url.
    Il y a surement pas mal d'autres problèmes à cette regexp, mais le premier qui me saute aux yeux, c'est que tu n'as pas groupé la gauche et la droite de tes or ( | ). Du coup il s'applique entre 2 caractères alors que tu veux manifestement l'appliquer entre deux groupes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (http://)|(https://)|(HTTP://)|(HTTPS://)
    Qu'il est d'ailleurs préférable d'écrire
    pour gérer toutes les combinaisons de majuscules.

    une url ça a la forme grosso modo <scheme>://<user>:<password>@<host>:<port>/<url-path>

    url-path dépend du scheme. Je suppose que tu ne gère que les urls absolues donc le scheme est obligatoire (parce que dans un browser, //host/path/to/file est valable). Le href= par contre de ta regxep, je ne sais pas ce qu'il fait là, ça n'a rien à voir avec une url. Pourquoi y a-t-il un www. dans ta regexp, ça ne fait pas partie du standard? je pourrais écrire xyz à la place, ça resterait une regexp valide. Enfin, ta regexp que tu as codée s'arrête au host, tu as oublié le path, le port, le user/pass, les paramètres d'encodage puisque tu accepte le ftp, ...

    Je te rappelle que le host name accepte aujourd'hui n'importe quelle lettre unicode, pas seulement l'ascii et les nombres.
    http://www.météo.be/meteo/view/fr/65657-Climat.html

    Et le hostname peux être constitué d'un ipv6 plutôt que d'un nom
    http://[2001:4860:0:2001::68]/

    Je te signale aussi que . dans une regexp, ça veux dire "n'importe quel caractère", pas "un point". Je n'ai pas trop compris la logique à la fin de ton expression de finalement demander 3 ou plus lettres minuscules pour finir le nom.

    Bref ta regexp est bonne pour la poubelle. Et je te suggère de plutôt utiliser la class URL de java pour valider tes urls.

Discussions similaires

  1. Expression reguliere pour controle
    Par Patrick-74 dans le forum Web
    Réponses: 5
    Dernier message: 19/12/2006, 20h24
  2. [XSLT]Expression régulière pour filtrer le contenu d'un noeud
    Par Matthieu Brucher dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/10/2006, 15h35
  3. Expression reguliere pour avoir le contenu d'un lien <A ....>
    Par jejam dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/05/2006, 16h37
  4. Expression régulière pour plusieurs remplacements
    Par mickael99 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/02/2006, 12h15
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo