我有可能的URL路径如下
/articles
/payment
/about
/articles?page=1
/articles/hello-world
我想只匹配网址的主要路径,预期匹配:['articles', 'payment', 'about', 'articles', 'articles']
所以我尝试构建JavaScript RegEx并尽可能地提出[a-z].*(?=\/|\?)
,遗憾的是它只匹配最后两个内的字符串
请指导 谢谢大家
答案 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];
}