所以我试图创建我的第一个路径这需要经过筛选使用regexs多个PARAMS:的NodeJS - 添加多个parames的路径与正则表达式
router.get('/circle/:radius([0-9]{1,3})/Xposition/:x(\-?[0-9]{1,3}(\.[0-9]{1,9})?)/Yposition/:y(\-?[0-9]{1,3})', function(req, res, next) {
console.log('x ' + req.params.x);
console.log('y ' + req.params.y);
});
做得到这样的事情后: http://localhost:8080/circle/100/x/100.0/y/100.00
我有如下印刷得到endup:
x 100.0
y .0
现在看来似乎不喜欢我的正则表达式,但我已经试过USI正则表达式测试仪,看起来很好。有什么我错过了它如何与nodejs和表达?我想能够获得像-100.00和-100这样的点数,但它似乎并不像预期的那样工作。有任何想法吗?另外,将这些正则表达式从路由中分离出来的原因很简单,因为它们是重复的。谢谢。
编辑: 我能够解决这个问题,通过在正则表达式下面添加rh和用if语句添加tesitng来解决这个问题。不过还是想知道这是可能的,而无需使用单独的正则表达式
var pointRegex = new RegExp("^\-?[0-9]{1,3}(\.[0-9]{1,9})?$");
这是一个非常糟糕的主意,我唯一能说的是:开始使用[express](http://expressjs.com)或[hapi](http://hapijs.com/)或类似的东西。至少是一个路由器包,它执行正常的参数解析,所以你可以使用像'/ base /:thing /:otherthing'这样的路由,然后在你的处理器中访问'thing'和'otherthing'变量。如果你需要像你在这里展示的那样的正则表达式,那么事情就会发生很大的错误。 – 2015-03-03 00:28:06
@ Mike'Pomax'Kamermans我不太明白,我在示例中使用了express,也许你可以举一个简单的例子来说明你的意思吗?这是我的第一天与JavaScript和节点:( – Sun 2015-03-03 00:32:56
如果您使用快递,不要在您的路线使用正则表达式,使用[参数](http://expressjs.com/4x/api.html#app.param ),然后在你的路由中使用它们,这样在这种情况下,你可以得到'app.get(“/ circle /:radius /:x /:y”,...)',然后在param函数中处理验证。回答即将到来 – 2015-03-03 00:50:25