通过JavaScript regex获取url路径名的一部分

时间:2014-01-31 13:20:18

标签: javascript regex expression

我有以下网址:

https://www.example.com/article/f/1/test+article

我需要通过JavaScript(纯javascript)从网址获得“1”部分。我知道我可以使用“location.pathname.replace()”来获取它,但我对正则表达式并不擅长。

更新

只是为了澄清:“https://www.example.com/article/f/”从不改变,它是不变的。可以更改的URL的唯一部分是“1”(文章ID)和“测试文章”(文章名称)。我想抓住文章ID。

4 个答案:

答案 0 :(得分:1)

location.pathname.match(/\/article\/f\/(\d+)/)[1]

我正在尝试匹配/ article / f /和该组捕获的至少1位数(请注意括号)。 如果该ID是路径中的单个数字,则可以通过以下方式直接获取:

location.pathname.match(/\d+/)[0]

答案 1 :(得分:0)

此答案只会获取网址中的最后一个/number表达式。

样本数据:

https://www.example.com/article/f/1/test+article
http://www.aaa.com/2/thing/1
http://bbb.org/2anotherthing/1?a=b&c=b

正则表达式:

\/(\d+)\b(?!.*\/(\d+)\b)

  • \/寻找斜线
  • (\d+)捕获组:获取任意长度的数字
  • \b字边界
  • (?!)负面展望未来。展望未来,确保我们与嵌套的正则表达式不匹配。
  • .*任何字符。
  • \/(\d+)\b再次使用相同的正则表达式,以便我们只匹配最右边的匹配项。

javascript:

使用javascript exec方法将捕获的数据转换为名为cap的数组。

var cap = /\/(\d+)\b(?!.*\/(\d+)\b)/.exec("https://www.example.com/article/f/1/test+article");

输出是完整的正则表达式匹配和捕获的组。

["/1", "1", undefined]

然后,您可以将cap[1]用于第一个捕获的群组。

答案 2 :(得分:-1)

你知道你可以将其与\d匹配,对吗?

是否需要匹配一些更具体的模式?

答案 3 :(得分:-1)

分割路径怎么样:

var path = 'https://www.example.com/article/f/1/test+article';
var pathArray = path.split( '/' );
console.log(pathArray);
console.log(pathArray[5]);

输出

["https:", "", "www.example.com", "article", "f", "1", "test+article"]
1

我假设你知道/所处的'索引'(即1),在你的情况下是第6个(当然是从零开始的第5个)索引/数组元素