2012-02-20 29 views
5

Cho một xâu với URL trong các định dạng sau:Cho URL dưới dạng chuỗi, cách trích xuất miền và tiện ích mở rộng?

https://www.cnn.com/ 
http://www.cnn.com/ 
http://www.cnn.com/2012/02/16/world/american-nicaragua-prison/index.html 
http://edition.cnn.com/?hpt=ed_Intl 

W JS/jQuery, làm thế nào tôi có thể trích xuất từ ​​chuỗi chỉ cnn.com cho tất cả trong số họ? Tên miền cấp cao nhất cộng với tiện ích mở rộng?

Cảm ơn

+1

url.match (/:. \/\/([^ /] +) /) [1] ; – AnApprentice

+0

Tại sao phải bận tâm với regex. Đó là một con dao quân đội Thụy Sĩ khi tất cả những gì bạn cần là một cái muỗng. – tkone

+0

@AnApprentice nếu bạn muốn tên miền phụ, chỉ cần sử dụng 'location.host'. Không cần regex ở alla. – tkone

Trả lời

0
var domain = location.host.split('.').slice(-2); 

Nếu bạn muốn nó tập hợp lại:

var domain = location.host.split('.').slice(-2).join('.'); 

Nhưng điều này sẽ không làm việc với co.uk hoặc một cái gì đó. Không có quy tắc cứng và nhanh cho điều này, thậm chí không phải regex cũng sẽ xác định điều đó.

+0

... trong đó 'location.host' là chuỗi chủ đề – satoshi

+0

@satoshi' location.host' là thuộc tính chuỗi của đối tượng vị trí. Nó đề cập đến dữ liệu giữa '//' và '/' đầu tiên trong URL của bạn. Đó là trong trình duyệt trở lại IE6 và tôi tin rằng ngay cả Netscape 4. – tkone

+0

Điều này không làm việc cả. '" http://www.cnn.com/2012/02/16/world/american-nicaragua-prison/index.html ".split ('.'). slice (-2) .join ('.') Vị trí '->' "com/2012/02/16/world/american-nicaragua-prison/index.html" ' –

0

Cho rằng có các tên miền cấp cao nhất có dấu chấm trong chúng, ví dụ: "co.uk", không có cách nào để thực hiện việc này trừ khi bạn đưa danh sách tất cả các TLD có dấu chấm vào chúng.

3
​var loc = document.createElement('a'); 

loc.href = 'http://www.cnn.com/2012/02/16/world/index.html'; 

​window.alert(loc.hostname);​ // alerts "cnn.com" 

Tín dụng cho phương pháp trước đó:

Creating a new Location object in javascript

+0

Điều này bao gồm tên miền phụ. Mặc dù vậy. –

+0

vấn đề là điều này cho www. không mong muốn .. – AnApprentice

+0

do đó: 'loc.hostname.split ('.'). slice (-2) .join ('.')' nhưng bạn vẫn sẽ bị vặn vẹo trên toàn bộ '.co.uk 'loại tên miền ... – tkone

-1
// something.domain.com -> domain.com 
function getDomain() { 
    return window.location.hostname.replace(/([a-z]+.)/,""); 
} 
+0

Giới thiệu về cụm từ thông dụng của bạn. A. bạn không cần phải chụp một nhóm ở đây. B. bạn đang cố gắng để phù hợp với một. với một . phù hợp với bất kỳ ký tự nào khác (ngoại trừ \ n) Vì vậy, điều này nên là: window.location.hostname.replace (/ [a-z] + \ ./, "") –

0
function domain(input){ 
    var matches, 
     output = "", 
     urls = /\w+:\/\/([\w|\.]+)/; 

    matches = urls.exec(input); 

    if(matches !== null){ 
     output = matches[1]; 
    } 

    return output; 
} 
+0

Tôi đề nghị bạn giải thích mã của bạn! –

Các vấn đề liên quan