2016-11-18 33 views
1

得到的字符串我有一個網址正則表達式:在URL登錄/測試

https://test.com/login/param2 

我怎麼拿到的第二個參數「參數2」從使用正則表達式的網址是什麼?

的網址,也可以

https://test.com/login/param2/ 

所以,正則表達式應該兩個網址。

我試圖

var loc = window.location.href; 
    var locParts = loc.split('/'); 

,然後通過locParts循環,但似乎效率不高。

「param2」可以有數字,a-z中的字符字符和短劃線。

+0

只有這兩種可能性? – baao

+0

使用locParts [last-Inddex] – Mahi

回答

2

使用String#match方法與正則表達式/[^\/]+(?=\/?$)/

var a = 'https://test.com/login/facebook', 
 
    b = 'https://test.com/login/facebook/'; 
 

 

 
var reg = /[^\/]+(?=\/?$)/; 
 
console.log(
 
    a.match(reg)[0], 
 
    b.match(reg)[0] 
 
)


或者用String#split獲得最後一個非空元素。

var a = 'https://test.com/login/facebook', 
 
    b = 'https://test.com/login/facebook/'; 
 

 
var splita = a.split('/'), 
 
    splitb = b.split('/'); 
 

 
console.log(
 
    splita.pop() || splita.pop(), 
 
    splitb.pop() || splitb.pop() 
 
)

0

正則表達式可能是緊湊的,但他們肯定是不會自動有效的,如果你可以做你想做的沒有。

這裏是你如何改變你的代碼:

var loc = 'https://test.com/login/facebook/'; // window.location.href; 
 
var locParts = loc.split('/').filter(function(str) {return !!str}); 
 
var faceBookText = locParts.pop(); 
 
console.log(faceBookText);

過濾器刪除最後一個空項目,如果該URL以「/」結尾,你會得到。這就是你需要的一切,然後只需要最後一項。

0

如果你不介意使用JS只(所以沒有正則表達式),您可以使用此:

var lastParameter = window.location.href.split('/').slice(-1); 

Basicaly,像你這樣的,我取的URL,由/性格分裂,後來我使用splice function獲取split結果數組的最後一個元素。