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 на домен и поддомен, эти суффиксы регулярно обновляются. Это решаемая проблема, а не та, которую вы хотите решить самостоятельно (если вы не гуглите или что-то в этом роде). Если вам не нужно имя хоста или доменное имя в крайнем случае, не пытайтесь разобраться в этом.
url.split('/')[2]
Так независимо от того, мы пишемftp
,ftps
,https
, доменное имя будет ВСЕГДА быть указательным 2.