使用路径对正则表达式时,如何匹配不以/api/开头的所有路径
通过使用本机JavaScript,RegExp /^(?!\/api\/).*/将匹配/x/y/z。见这里的测试结果

但是,它不适用于路径到regexp。参见那里的测试结果

,那么,实现我的目标的正确方法是什么?
更新1
更多细节:真正的情况是我使用的是angular2 + koajs。在angular2中,浏览器可能会向服务器发出客户端路由url。请看一下我的另一个问题。
为了解决这个问题,正如@mxii所建议的那样,我试图使用koa-repath将所有未以/api/启动的请求重定向到根url:http://localhost:3000/例外--它是静态资产(js/json/html/png/.)请求。
koa-repath使用path-to-regexp来匹配路径。所以我才问这个问题。
发布于 2016-08-24 13:17:58
有关快速路测试器工作原理的说明,请参阅我的评论。
如果您只想要一个简单的正则表达式来检查字符串是否以api或/api开头,那么您不需要使用“路径到正则表达式”,只需使用这个正则表达式:
/^(?!\/?api).+$/解释:
^ => beginning of string
(?!) => negative look-ahead
\/? => 0 or 1 slash
.+ => 1 or more character (any except newline)
$ => end of string因此,如果字符串的开头不跟着/api (可选斜杠),则会得到匹配。
有关示例,请参见http://regexr.com/3e3a6。
编辑:如果你想用另一种方式(只匹配以/api或api开头的urls ),你可以使用正面的前瞻性:
^(?=\/?api).+$http://regexr.com/3e3a9
但更简单的是:
^\/?api.*$http://regexr.com/3e3af
发布于 2020-05-06 04:18:51
我也想做同样的事。似乎那些回答的人并没有真正理解你在问什么。
我不确定这是否有可能做到的路径,以-雷杰普。它似乎没有消极的前景。
你能做的就是改变你的路线的顺序。在添加静态内容之前,添加api路由以表示/任何内容。
app.use('/api', require('./api'));
app.get('/*', function (req, res) {
//serve angular app
});我就是这样做的,api路径也能工作。
发布于 2019-06-11 02:25:11
模式blow /somestring+所需的Regex,
例如,
https://stackoverflow.com/questions/39123607
复制相似问题