parse-domain - una libreria leggera molto solida
npm install parse-domain
const { fromUrl, parseDomain } = require("parse-domain");
Esempio 1
parseDomain(fromUrl("http://www.example.com/12xy45"))
{ type: 'LISTED',
hostname: 'www.example.com',
labels: [ 'www', 'example', 'com' ],
icann:
{ subDomains: [ 'www' ],
domain: 'example',
topLevelDomains: [ 'com' ] },
subDomains: [ 'www' ],
domain: 'example',
topLevelDomains: [ 'com' ] }
Esempio 2
parseDomain(fromUrl("http://subsub.sub.test.ExAmPlE.coM/12xy45"))
{ type: 'LISTED',
hostname: 'subsub.sub.test.example.com',
labels: [ 'subsub', 'sub', 'test', 'example', 'com' ],
icann:
{ subDomains: [ 'subsub', 'sub', 'test' ],
domain: 'example',
topLevelDomains: [ 'com' ] },
subDomains: [ 'subsub', 'sub', 'test' ],
domain: 'example',
topLevelDomains: [ 'com' ] }
Perché?
A seconda del caso d'uso e del volume, consiglio vivamente di non risolvere questo problema da soli utilizzando regex o altri mezzi di manipolazione delle stringhe. Il nocciolo di questo problema è che devi conoscere tutti i suffissi gtld e cctld per analizzare correttamente le stringhe dell'URL nel dominio e nei sottodomini, questi suffissi vengono aggiornati regolarmente. Questo è un problema risolto e non uno che vuoi risolvere da solo (a meno che tu non sia google o qualcosa del genere). A meno che non sia necessario il nome host o il nome di dominio in un pizzico, non provare ad uscire da questo.
url.split('/')[2]
Dal indipendentemente scriviamoftp
,ftps
,https
, il nome del dominio sarà sempre a indice 2.