我有以下网址:
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。
答案 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 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个)索引/数组元素