parse-domain : una biblioteca ligera muy sólida
npm install parse-domain
const { fromUrl, parseDomain } = require("parse-domain");
Ejemplo 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' ] }
Ejemplo 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' ] }
¿Por qué?
Dependiendo del caso de uso y el volumen, le recomiendo no resolver este problema usted mismo utilizando regex u otros medios de manipulación de cadenas. El núcleo de este problema es que necesita conocer todos los sufijos gtld y cctld para analizar correctamente las cadenas de URL en dominios y subdominios, estos sufijos se actualizan regularmente. Este es un problema resuelto y no uno que desee resolver usted mismo (a menos que sea google o algo así). A menos que necesite el nombre de host o el nombre de dominio en un apuro, no intente analizar este camino.
url.split('/')[2]
Desde independientemente de que escribimosftp
,ftps
,https
, el nombre de dominio siempre estará en el índice 2.