parse-domain - một thư viện nhẹ rất chắc chắn
npm install parse-domain
const { fromUrl, parseDomain } = require("parse-domain");
ví dụ 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' ] }
Ví dụ 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' ] }
Tại sao?
Tùy thuộc vào trường hợp sử dụng và khối lượng, tôi thực sự khuyên bạn không nên tự mình giải quyết vấn đề này bằng cách sử dụng regex hoặc các phương tiện thao tác chuỗi khác. Cốt lõi của vấn đề này là bạn cần biết tất cả các hậu tố gtld và cctld để phân tích chính xác các chuỗi url thành tên miền và tên miền phụ, những hậu tố này được cập nhật thường xuyên. Đây là một vấn đề được giải quyết và không phải là một vấn đề bạn muốn tự giải quyết (trừ khi bạn là google hoặc một cái gì đó). Trừ khi bạn cần tên máy chủ hoặc tên miền trong một nhúm, đừng thử và phân tích theo cách của bạn ra khỏi cái này.
url.split('/')[2]
Từ bất kể chúng ta viếtftp
,ftps
,https
, tên miền sẽ luôn luôn được ở chỉ số 2.