正则表达式用于匹配以/public/开头的Express路由器URL路径

6

要求:需要匹配所有以/public/token开头的URL。

我尝试过的:我尝试了以下正则表达式来匹配所有以/public/开头的路径:

正则表达式:/\/public\/.*/

当我在regex101中使用相同的正则表达式时,它能够匹配以/public/ token开头的URL。

但是当我在Express路由测试器中尝试相同的内容(http://forbeslindesay.github.io/express-route-tester/?_ga=1.180272292.1056934125.1459765156),它无法正常工作。

请问有人能帮我知道原因吗!

样本代码:

我的期望是所有以/public/ token开头的URL都应该通过此路由。

router.route(/\/public\/.*/)
        .get(function(req, res, result){
            // TODO
        });

示例:

https://localhost:8082/public/styles/styles.css
https://localhost:8082/public/js/rs.css
https://localhost:8082/public/images/qq.png

编辑器显示的正则表达式不正确,应该是这个(//public/.*/)。 - kalki
尝试使用以下正则表达式:\/public\/(.*)\/ 或者 (.*)\/public\/(.*)\/ - rock321987
1
Express Route Tester 是一个方便的工具,用于测试基本的 Express 路由,尽管它不支持模式匹配。来源)只需使用 Express 语法 app.get(/\/public\/.*/, function(req, res) { res.send('/\/public\/.*/'); }); - Wiktor Stribiżew
你真的需要使用正则表达式吗? router.route('/public/*') 不符合要求吗? - Ash
@KGopi:我们已经发布了答案,请考虑给予赞同/采纳以最终解决问题。 - Wiktor Stribiżew
显示剩余3条评论
2个回答

5
请看这个说明

Express路由测试器是一个方便的工具,用于测试基本的Express路由,但它不支持模式匹配

可以使用以下Express语法来使用正则表达式:
app.get(/\/public\/.*/, function(req, res) { 
   res.send('/\/public\/.*/'); 
});

不过,使用route.route可以使用更简单的通配符模式:

router.route('/public/*')

*匹配任意0个或多个字符。


1

以下是我评论的总结:

虽然您可以使用正则表达式来匹配所有与'/public'相匹配的URL,但您并不需要这样做-您只需使用以下路由即可:

router.route('/public/*')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接