2011-07-16 71 views
0

我正在尋找一個正則表達式,將抓住一個URL的最後一個術語。這並不總是一個文件名,它可能不會以.html或.php結尾,所以我需要確保正則表達式從URL中抓取最後一個字詞。谷歌分析的正則表達式來確定頁面


實施例:

我需要抓住www.mydomain.com/anything_can_be_here/ thankyoupage

我需要提取 「thankyoupage」,在即使有可爲任何術語之前它URL。

另請注意,thankyoupage網址段上沒有文件擴展名。

+0

你需要的域名之後的一切嗎?或只是最後一部分(即不包括路徑/文件夾)? –

+0

只是最後一部分 - 任何事情在最後的斜線之後。例如:www.mydomain.com/this或www.mydomain.com/other/other/this – Atticus

+0

所以你想要的URL的路徑的最後一個組成部分?如果你有'http://example.com/where?is = pancakes/house',會發生什麼?有沒有什麼好的理由,你需要一個單一的正則表達式呢? –

回答

1

這應該這樣做:

/^(?:http:\/\/)?(?:[^\/]+)\/.*?\/([^\/]+)(?:\?.*)?$/ 

例如,這樣的結果:

m = 'http://example.com/where/is?the=pancakes/house'.match(/^(?:http:\/\/)?(?:[^\/]+)\/.*?\/([^\/]+)(?:\?.*)?$/); 

是此數組:

["http://example.com/where/is?the=pancakes/house", "is"] 

這:

m = 'http://example.com/where/is'.match(/^(?:http:\/\/)?(?:[^\/]+)\/.*?\/([^\/]+)(?:\?.*)?$/) 

結果:

["http://example.com/where/is", "is"] 

這:

m = 'http://example.com/'.match(/^(?:http:\/\/)?(?:[^\/]+)\/.*?\/([^\/]+)(?:\?.*)?$/) 

結果在null

而你的組件在m[1]和來自([^\/]+)(?:[^\/]+)將處理主機名(如果它恰好存在,則用戶信息),(?:\?.*)?$部分將負責處理任何結尾的CGI參數。

根據您的網址,您可以用^http:\/\/替換^(?:http:\/\/)?

0

你需要的路徑是什麼名稱,它可以使用訪問:

window.location.pathname; 
+0

對不起,我想我已經說過,我只需要一個正則表達式,除了正則表達式,沒有支持的語言選項。 – Atticus

+0

你的問題被標記爲'javascript',所以萬一你使用JavaScript,不需要正則表達式 – Ibu

0

試試這個正則表達式:

^http:\/\/.*/(.+)$ 

它會尋找開始http://字符串,然後會一路走下去直到最後/並將最後/後的所有內容存儲爲$1變量。

+0

你錯過了一個反斜槓。 「http://example.com/where?= pancakes/house」會發生什麼? –

0

希望這是你想要

console.log(window.location.pathname.split('/').reverse()[0]); 
+0

不需要 - 需要一個正則表達式 – Atticus

+0

那麼爲什麼這篇文章被標記爲「javascript」?試試這個正則表達式'/ \ /([^ /] *)$ /我' –

0

試試這個什麼:

var str = "www.mydomain.com/other/other/this"; 
var path = /(?:https?:\/\/)?(?:www\.)?.*\/([^\/]+)/.exec(str)[1]; //this 
+0

這似乎並不工作 – Atticus

+0

@Atticus:響應更新.. –

1

如果你只餵養它的網址,簡單的東西如.*/(.*)應該工作

這是假設有一個'/'在.com /之後。組織/不管

否則你會得到HTTP之後的一切://

+0

什麼'http://example.com/where?is=pancakes/ house'? –

0

的正則表達式:

/(\/([^\/]+))+/g 

承擔由此產生的陣列的第三要素:

var a='http://www.host.com/aaa/bbb/ccc/dd.pp'; 
var regexp=/(\/([^\/]+))+/g; 
var result=regexp.exec(a) 
if(result.length==3) { 
    document.write('<p>'+result[2]+'</p>'); 
} else { 
    document.write('<p>Fail</p>'); 
} 
0

好吧想通outmyself,感謝反正你們

/\/*\/thanks/ 

將匹配/感謝

相關問題