使用 path-to-regexp 时,如何匹配所有不以 /api/
开头的路径?
通过使用本机 JavaScript RegExp /^(?!\/api\/).*/
将匹配 /x/y/z
。从 这里 查看测试结果
但是,它不适用于 path-to-regexp。从 那里 查看测试结果
那么在 path-to-regexp 中实现我的目标的正确方法是什么?
[更新 1]
更多细节:实际情况是我使用的是 angular2 + koajs。在 angular2 中,浏览器可能会向服务器发出客户端路由 url。请参阅我关于此的 另一个问题。
为了解决这个问题,正如@mxii 所建议的,我正在尝试使用 koa-repath 将所有不是以 /api/
开头的请求重定向到根 url: http://localhost:3000/
除了它是静态的资产 (js/json/html/png/…) 请求。
和 koa-repath
使用 path-to-regexp
匹配路径。这就是我问这个问题的原因。
原文由 ricky 发布,翻译遵循 CC BY-SA 4.0 许可协议
有关快速路由测试器如何工作的解释,请参阅我的评论。
如果你只是想要一个简单的正则表达式来检查一个字符串不是以
api
或/api
开头,你不需要“路径到正则表达式”,你可以只需使用此正则表达式:解释:
因此,如果字符串的开头后面没有
/api
(可选斜线),您将获得匹配项。有关示例,请参见 http://regexr.com/3e3a6 。
编辑:如果你想要反过来(只匹配以
/api
或api
开头的网址,你可以使用积极的前瞻:http://regexr.com/3e3a9
但它更简单:
http://regexr.com/3e3af