url 字符串,jquery/js 获取两个斜杠之间的数字
Posted
技术标签:
【中文标题】url 字符串,jquery/js 获取两个斜杠之间的数字【英文标题】:url string, jquery/js get numbers that are between two slashes 【发布时间】:2016-04-21 13:07:16 【问题描述】:我正在开发一个具有如下所示网址的论坛:
http://www.place.com/forum/d7/2/
http://www.place.com/forum/d7/22/
http://www.place.com/forum/d7/234/
http://www.place.com/forum/d7/9999/
http://www.place.com/forum/d7/98765/
/d7/ 是用户名 /2/是用户ID
用户 ID 从 1 变为无限制。
如何“获取”用户 ID?
如果它只有一个数字,例如 2,我想出了如何得到它。但是我如何告诉它查看最后两个斜线之间的每个数字?
【问题讨论】:
链接我们一些你写的代码,我们会调整它。 ;) 【参考方案1】:另一种可能的解决方案是:
var result, str = "http://www.place.com/forum/d7/98765/";
var lastIndex = str.lastIndexOf('/');
if (str.slice(-1) != "/")
result = str.substring(lastIndex + 1, str.length);
else
var prevIndex = str.lastIndexOf('/', lastIndex - 1);
result = str.substring(prevIndex + 1, lastIndex);
找到/
的最后一个索引和倒数第二个然后找到子字符串,如果没有尾随/
,则查找后面的所有内容。
编辑:添加了没有尾随 /
的解决方案,因为我受到 @Fallenreaper 的启发
小提琴:https://jsfiddle.net/uzxcodu1/1/
【讨论】:
【参考方案2】:可以使用正则表达式:
/^.*/(\d+)/$/mg
再提琴:http://refiddle.com/refiddles/56995c8875622d3ff7aa0000
示例代码:
var url="http://www.place.com/forum/d7/98765/"
var re = /^.*\/(\d+)\/$/mg;
var id= re.exec(url)[1]
alert(id);
js 小提琴:https://jsfiddle.net/r55wz2hp/
(还有其他可能更好的方法与正则表达式一起使用)
【讨论】:
【参考方案3】:这将为您提供所需的答案。
var url = "http://www.place.com/forum/d7/9999/".split("/");
var id = url[url.length - 2];
如果有尾随 /
,这将起作用。
如果没有,那么是-1
而不是-2
,但是如果你检查最后一个字符,你可以将其作为你的理解。
var url = "http://www.place.com/forum/d7/9999/";
var isLastSlash = (url[url.length -1]=="/")? true: false;
var url= url.split("/");
var id = url[url.length - (isLastSlash? 2: 1)];
return id;
【讨论】:
谢谢,它工作得很好。你还教会了我一些关于如何“思考”使用字符串的意外知识,所以也谢谢你。 :) 没问题! :) 我很高兴能帮上忙。我还想编写备用网址,以防网址没有尾部斜杠(/
),或者它是可选的并且可能存在(或不存在)。不要忘记将答案标记为您选择正确的答案。这样未来的编码人员就会看到它。
哦 +1 用于处理没有尾随斜杠的情况 =]
@Fallenreaper 将这里所做的事情扔到一个函数中,这样您就可以在需要时随时使用它,您可以根据需要修改所述函数以使其随时可重用。我的两分钱。
@NielsVermeiren Correcy,虽然我想表明它显然是一个布尔值以上是关于url 字符串,jquery/js 获取两个斜杠之间的数字的主要内容,如果未能解决你的问题,请参考以下文章