node.js - 可变数量的参数表达js

标签 node.js express

我试图在express js 中定义一 strip 有未知数量N 个参数的路由。它应该匹配以下路由,捕获所有数字组:

/范围

/范围/1/12

/范围/1/12/123

等等

我写了一个正则表达式来匹配n个数字,如下:

/(?:\/?(\d+)\/?)/g

但是全局/g 似乎不允许,请参阅 ( The regex parser of express js on github )。我在这里做错了什么吗?我可以通过执行以下操作来解决这个非常丑陋和肮脏的问题:

^\/scope\/?(\d+)?\/?(\d+)?\/?(\d+)?

但这不是动态的,感觉很脏,如果我添加更深层次的范围,我总是需要添加更多/?(\d+) 正则表达式部分,这是一个不适合我的业务逻辑的模型。我确信一定有更好的方法......

好吧,在与 @vks 进行讨论之后,这很有用,但不幸的是没有回答问题,我们得出的结论是,这不是正则表达式问题。使用\g 修饰符,即使在 javascript 非常有限的正则表达式引擎中,也可以很容易地编写捕获所有数字组的正则表达式。

问题现在变得更加清晰:因为expressjs不允许从头到尾使用完整的正则表达式,而是将您在路由中使用的正则表达式包含在它自己的正则表达式的开始和结尾中,不允许使用/g 修饰符,解决这个问题的expressjs惯用方法是什么?

最佳答案

^\/scope(?:\/\d+)*$

您可以尝试一下。请参阅演示。

https://regex101.com/r/eZ0yP4/30

关于node.js - 可变数量的参数表达js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27522126/

相关文章:

javascript - 如何使用 async/await 方法将对象传递到 phantom js 页面?

javascript - 一个应用程序中不同html中的不同合并和缩小的js文件

javascript - 我如何使用 Node.js Express 压缩中间件?

javascript - Node/Express 路由不等待 Redis 服务器回调

javascript - 调试对象上的 console.log

json - 响应应该具有两个给定属性中的任何一个

android - 如何在nodejs和android中设置实时地理位置跟踪

javascript - 如何查找Node.js目录下的内置模块

node.js - Angular 6 和 Nodejs : No 'Access-Control-Allow-Origin' header is present on the requested resource

node.js - 不能在另一个 Controller 中使用 req.user