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

JavaScript Discussion :

RegExp pour simplifier des URLs [RegExp]


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 89
    Par défaut RegExp pour simplifier des URLs
    Bonjour à tous,

    J'essaie de créer une Regex qui puisse simplifier des urls de cette facon :

    Avant :
    http://test.com/
    https://test.com/test/mytest
    ftp://test.com/test/mytest.html
    abc://test.com/test/

    Après :
    test.com
    test.com/test/mytest
    test.com/test/mytest.html
    test.com/test/

    J'y suis presque, j'ai juste une slash qui saute sur le dernier exemple ("test.com/test" au lieu de "test.com/test/") :S

    Pouvez-vous m'aider ?

    Merci !

    Ma Regex actuelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function shurl( url ) 
    {
    	var reg = /(.+(www\.|\/\/))([a-z0-9_\-\/]+\..+)(\/|\b)/gi;
    	var ar = reg.exec(url);
    	return ar[3];
    }
     
    document.write(shurl("http://www.test.com/")+"<br />");
    document.write(shurl("http://www.test.com/test/mytest")+"<br />");
    document.write(shurl("http://www.test.com/test/mytest.html")+"<br />");
    document.write(shurl("http://www.test.com/test/")+"<br />");

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    oulà tu te complique l'existence là ...
    en une ligne c'est torché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function shurl( inurl ) 
    {
     return  inurl.replace(/.*\/{2}/,'');
    }

    exemple d'utilisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    arrayurl=["http://test.com/","https://test.com/test/mytest","ftp://test.com/test/mytest.html","abc://test.com/test/"]
    var i=-1
    while (arrayurl[++i]){
     alert( shurl(arrayurl[i]))
     }
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 89
    Par défaut
    MERCI BEAUCOUP !

    OK alors je vais essayer de comprendre le modèle que tu as fait pour ne pas reproduire le même erreur la prochaine fois ^^ Déjà utiliser replace Je débute en JS mais je suis motivé pour apprendre

    Par contre je sais pas si ce détail compléxifie beaucoup la chose mais j'aimerais que les URLs comme "http://www.test.com/" perdent le slash à la fin et deviennent "test.com" au lieu de "test.com/", je poste si je trouve une solution SIMPLE ^^

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    en une seule reg ça peut se compliquer, mais tu peux les enchainer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return  inurl.replace(/^.*\/{2}/,'').replace(/\/$/,'')
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 89
    Par défaut
    Merci SpaceFrog Par contre je perds mes slashs à la fin des urls du type : "http://www.test.com/rubrique/", je souhaiterai perdre les slashs pour les URLs qui ne comportent que le nom de domaine comme "http://www.test.com/" => "test.com"

    Je cherche une solution de mon côté mais débutant sur les Regex en JS j'ai quelques difficultés.

    Je poste la solution et je clos le sujet dès que je l'ai

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 89
    Par défaut
    Je poste la fonction que j'ai créé elle convient normalement à n'importe quel format d'URL. Il y a surement une manière plus performante de faire ca mais bon la fonction marche.

    Fonction pour simplifier des urls :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    function shurl( inurl )
    {
     
    	// Regex pour tester si l url est seulement un nom de domaine
    	var reg = new RegExp("^[a-z0-9\._-]+\/$","g");
     
    	var inurl= inurl.replace(/(.*:\/\/)(www\.|www2\.|www3\.|\b)(.*)/,'$3');
     
    	// Si l url retourne est seulement un nom de domaine on enleve le slash
    	if(reg.test(inurl) == true) {
    		inurl = inurl.replace(/\//,'');
    	}
     
    	return inurl;
     
    }
    Avant :
    http://www.test.com/
    https://test.com/test/mytest
    ftp://www3.test.com/test/mytest.html
    abc://www.test.com/test/
    http://sousdomaine.test.com/

    Après :
    test.com
    test.com/test/mytest
    test.com/test/mytest.html
    test.com/test/
    sousdomaine.test.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] TEXTAREA et nl2br pour créer des URL
    Par mathurin61 dans le forum Langage
    Réponses: 4
    Dernier message: 03/08/2012, 22h01
  2. Réponses: 7
    Dernier message: 02/11/2010, 13h36
  3. [RegEx] Regexp pour matcher des numéros de téléphones
    Par m0ul3sh0t dans le forum Langage
    Réponses: 5
    Dernier message: 12/01/2010, 15h21
  4. regexp pour supprimer des dossiers
    Par Oega dans le forum VBScript
    Réponses: 1
    Dernier message: 16/07/2008, 08h38
  5. [RegEx] Expression régulière pour réduire des URL
    Par kivan666 dans le forum Langage
    Réponses: 6
    Dernier message: 11/06/2006, 21h39

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