我试图在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惯用方法是什么?
最佳答案
关于node.js - 可变数量的参数表达js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27522126/