2013-05-09 66 views
0

我想從下面的每個URL中獲取ID(1337)。最好的方法是什麼?該ID始終是數字。也許拆分「/」並採取第一個數字值?我很欣賞你的想法。如何通過URL獲取價值,防止打字錯誤?

其實網址就像第一個,但我想防止輸入錯誤。

這裏的的jsfiddle:http://jsfiddle.net/vKJfw/

/* outputs "1337" */ 
var url = "http://www.mydomain.com/module/action/1337/"; 

/* error: outputs "action" */ 
// var url = "http://www.mydomain.com/module/action/1337"; 

/* error: outputs "action" */ 
// var url = "http://www.mydomain.com/module/action/1337#"; 

/* error: outputs "" */ 
// var url = "http://www.mydomain.com/module/action/1337//"; 

/* error: outputs "bla" */ 
// var url = "http://www.mydomain.com/module/action/1337/bla/?x=y"; 

var url_parts = url.split("/"); 
var id  = url_parts[url_parts.length-2]; 

alert(id); // should output "1337" everytime! 
+2

你不能只是尋找'/ module/action /(\ d +)*'(粗略地)嗎? – 2013-05-09 14:12:57

+1

示例的開始總是相同的,所以不要嘗試從變量末尾讀取它。只是從前面去:'str.split('/')[5]' – Yoshi 2013-05-09 14:14:25

回答

4
var id  = parseInt(url_parts[5]); 

適用於所有的你的例子。

你也可以使用正則表達式找到的第一個數字:

var reg = /\d+/; 
var id = reg.exec(url); 

使用正則表達式可能是一個更強大的解決方案。

+0

我沒有提到,基本URL可能會改變(例如localhost)。 RegEx可能是一個解決方案。我會檢查它。謝謝! – 2013-05-09 15:56:48