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' ] }
どうして?
ユースケースとボリュームに応じて、正規表現または他の文字列操作手段を使用してこの問題を自分で解決しないことを強くお勧めします。この問題の核心は、URL文字列をドメインとサブドメインに正しく解析するために、すべてのgtldおよびcctldサフィックスを知る必要があることです。これらのサフィックスは定期的に更新されます。これは解決された問題であり、自分で解決したい問題ではありません(グーグルか何かでない限り)。ピンチでホスト名またはドメイン名が必要な場合を除いて、これから抜け出す方法を解析しないでください。
url.split('/')[2]
にかかわらず、私たちが書くののでftp
、ftps
、https
、ドメイン名は常にインデックス2になります