可变数量的params表达js

时间:2014-12-17 09:24:01

标签: node.js express

我正在尝试在快速js中定义一个路径,该路径需要N个未知数量的参数。它应匹配以下路线,捕获所有数字组:

/范围

/范围/ 1/12号

/范围/ 1 /一百二十三分之一十二

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

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

然而,似乎不允许global / g,请参阅(The regex parser of express js on github)。我在这里做错了吗?通过做类似的事情我可以解决这个非常丑陋和肮脏的问题:

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

你可以尝试一下。参见演示。

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