parse-domain - дуже солідна полегшена бібліотека
npm install parse-domain
const { fromUrl, parseDomain } = require("parse-domain");
Приклад 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' ] }
Приклад 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' ] }
Чому?
Залежно від випадку використання та обсягу, я настійно рекомендую не вирішувати цю проблему самостійно, використовуючи регулярні вирази або інші інструменти для маніпуляцій з рядками. Суть цієї проблеми полягає в тому, що вам потрібно знати всі суфікси gtld та cctld, щоб правильно проаналізувати рядки URL-адрес на домен та субдомени, ці суфікси регулярно оновлюються. Це вирішена проблема, а не та, яку ви хочете вирішити самостійно (якщо ви не Google або щось подібне). Якщо вам не потрібне ім'я хоста чи доменне ім'я, не намагайтеся проаналізувати вихід із цього.
url.split('/')[2]
Так незалежно від того, ми пишемоftp
,ftps
,https
, доменне ім'я буде ЗАВЖДИ бути вказівним 2.