方案
我想从document.location中提取路径字符串,不包括前导斜杠。 例如,如果网址是:
http://stackoverflow.com/questions/ask
我会得到:
questions/ask
这应该是直截了当的:
/* group everything after the leading slash */
var re = /\/(.+)/gi;
var matches = document.location.pathname.match(re);
console.log(matches[0]);
但是如果我在firebug控制台中运行这个片段,我仍然会得到一个领先的斜杠。 我已经测试了regexp,正则表达式引擎正确地提取了该组。
问题
如何正确获取组1字符串?
答案 0 :(得分:2)
如果你只是想获得没有前导斜杠的路径名,你真的不需要正则表达式。由于location.pathname
始终以/
开头,因此您只需从第一个索引中获取子字符串:
document.location.pathname.substr(1) // or .slice(1)
答案 1 :(得分:1)
使用正则表达式,您可以:
var m = 'http://stackoverflow.com/questions/ask'.match(/\/{2}[^\/]+(\/.+)/);
console.log(m[1]); /questions/ask
答案 2 :(得分:1)
您是说尾随还是斜线?从你的帖子看起来像是领先的斜线。
document.location.pathname.replace(/^\//,"")
顺便说一下,你的正则表达式是正确的,但你只需删除gi
并阅读matches[1]
而不是matches[0]
,因为matches[0]
是整个字符串匹配的regexp,而matches[1]
是匹配字符串中的捕获部分(在regexp中用括号引用)。
var matches = document.location.pathname.match(/\/(.+)/);
console.log(matches); // ["/questions/ask", "questions/ask"]