Je vais également ajouter à la pléthore de réponses (depuis que je l'ai élaboré).
Une petite modification à votre script original fonctionnera:
^(http(s)?:\/\/)?(www\.)?(([^\/]+)(\/.*)?)$
de sorte que vous auriez
function cleanUrl(url) {
return url.replace(/^(http(s)?:\/\/)?(www\.)?(([^\/]+)(\/.*)?)$/gi,"$4");
}
La principale différence ici est que j'ai changé la partie juste après la vérification de www pour capturer la reste de votre expression régulière en tant que groupe. C'est vraiment tout sur les groupes.
Votre combo string/regex originale ^(http(s)?:\/\/)?(www\.)?([^\/]+)(\/.*)?$
retourné les groupes suivants:
0. http://piza.com/something/1
1. http: //
2. non défini
3. non défini
4. pizza.com
5./quelque chose/1
Le combo string/regex révisé ^(http(s)?:\/\/)?(www\.)?(([^\/]+)(\/.*)?)$
Retours:
0. http: // Piza.com/quelque chose/1
1. http: //
2. non défini
3. non défini
4. pizza.com/something/1
5. pizza.com
6 ./quelque chose/1
Chaque fois que vous avez une paire de parenthèses vous créez un groupe. Dans votre cas, vous vouliez un groupe qui capturait tout après la partie www, c'est donc là que j'ai créé un nouveau groupe pour capturer tout le reste.
BTW, vous pouvez facilement essayer ces regex en ligne. J'ai utilisé JavaScript RegExp Example: Regular Expression Tester et appuyez sur le bouton "Show Match" pour voir ce que vos groupes retournaient.
Voulez-vous seulement vous débarrasser du www ou de tous les sous-domaines tous ensemble? – ChrisR
Etes-vous en train d'essayer de supprimer les doubles barres obliques initiales dans quelque chose comme //piza.com/quelque chose? – kinakuta