JavaScript RegEx匹配url路径

时间:2016-11-03 19:12:53

标签: javascript regex

我有可能的URL路径如下

/articles
/payment
/about
/articles?page=1
/articles/hello-world

我想只匹配网址的主要路径,预期匹配:['articles', 'payment', 'about', 'articles', 'articles']

所以我尝试构建JavaScript RegEx并尽可能地提出[a-z].*(?=\/|\?),遗憾的是它只匹配最后两个内的字符串

请指导 谢谢大家

1 个答案:

答案 0 :(得分:1)

https://regex101.com/r/A86hYz/1

/^\/([^?\/]+)/

这个正则表达式捕获第一个/和第二个/或第一个之间的所有内容?如果他们存在这看起来像你想要的模式。如果不是,请告诉我,我会根据需要进行调整。一些简单的调整将捕获每个/以及捕获查询参数之间的内容。

为了将来参考,在编写正则表达式时,尽量避免前瞻/后面,除非你必须引入错误。如果你坚持使用常规操作符,这是最简单的。

要访问匹配项,请使用以下正则表达式:

var someString = '/articles?page=1';
var extracted = someString.match(/^\/([^?\/]+)/)[1]

或更一般地

function getMainPath(str) {
    const regex = /^\/([^?\/]+)/;
    return str.match(regex)[1];
}