Cần giúp đỡ lấy domain url với JS

function getHost(url){
    const { hostname } = new URL(url);
     console.log(hostname);
}
getHost('https://playcode.io/1057908')
getHost('https://vi.wikipedia.org/wiki/Trang_Ch%C3%ADnh')
getHost('https://www.chinadaily.com.cn/a/202301/10/WS63bcc320a31057c47eba8aa5.html')
getHost('https://www.dw.com/en/ukraine-updates-kharkiv-hit-after-german-ministers-visit/a-64347275')
// output: playcode
// wikipedia
// chinadaily
// dw

Chi rắc rồi vậy?

console.log(window.location.hostname)

1 Like

Ý mình là lấy output kia chứ domain nó là random

bạn thử này xem

function getHost(url){
    const { hostname } = new URL(url);
     let result = hostname.split(".")
     console.log(result[0]);
}

1 Like

Yêu cầu ntn tức là lấy tên miền cấp 2 hoặc 3, bạn sẽ cần xét token [-2].

4 Likes

Code này chỉ đúng với domain nào không có subdomain vd: www, m …
Với domain là “https://www.dw.com/en/ukraine-updates-kharkiv-hit-after-german-ministers-visit/a-64347275” thì sai rồi

Muốn biết đúng hay sai thì phải có tiêu chí và yêu cầu. Bạn xem lại bài viết của mình xem đã đầy đủ thông tin hay chưa

4 Likes

Domain url là cái quái gì nhỉ? Rồi random nữa thì mình đến chịu. Dám cá 100% rằng bạn không thể biết được một chuỗi nhập vào có phải là domain hay không bởi vì hiện nay ngay cả ICANN cũng đang lúng túng.

Khi không có tiêu chí để “phán” đó là domain hay không thì lấy bằng kiểu gì nhỉ?

Domain không dùng ký tự Latin nữa thì rách việc luôn, kakaka.

Cho nên, tốt hơn hết là kiếm một cái RegEx ở đâu đó có thể xử lý được việc này một cách chung chung, thông thường nhất với cái domain có phần mở rộng thônng dụng. Test thấy true rồi thì dùng hàm sau:

function MyDomain(url){
  let dm = url.split("//")[1];
  return dm.split("/")[0];
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?