2013-05-09 23 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