Javascript Node.js-Express.js URL参数验证

Javascript Node.js-Express.js URL参数验证,javascript,node.js,express,Javascript,Node.js,Express,我是node.js/express.js新手。如何验证:id参数?我只想将数字传递到:id参数中。如果:id是一个字符串或包含其中一个,我希望显示一个404错误,就像zend framework路由一样 /routes/users.js var express = require('express'); var router = express.Router(); /* GET users listing. */ router.get('/:id?/', function(req, res,

我是node.js/express.js新手。如何验证
:id
参数?我只想将数字传递到
:id
参数中。如果
:id
是一个字符串或包含其中一个,我希望显示一个404错误,就像zend framework路由一样

/routes/users.js

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/:id?/', function(req, res, next) {
  var id = req.params.id;
  if(id){
    res.render('single-users', { title: 'Single ' + id });
  }else {
    res.render('users', { title: 'All users' });
  }

});

module.exports = router;
我试图改变

router.get('/:id?/',函数(req,res,next)

router.get('/[0-9]+?/',函数(req,res,next)

但是

工作并显示
单个用户
页面,我想要它

卢卡斯·科斯塔建议的解决方案

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/:id(\\d+)?/', function(req, res) {
  var id = req.params.id;

  if(id){
    res.render('single-users', { title: 'Single ' + id });
  }else {
    res.render('users', { title: 'All users' });
  }

});

module.exports = router;


为什么不只检查主代码块内部的整数,然后有条件地返回404呢

router.get('/:id', function(req, res, next) {
  var id = req.params.id;
  if(id && string.match(/^[0-9]+$/) != null)}
    res.render('single-users', { title: 'Single ' + id });
  }else if(string.match(/^[0-9]+$/) == null){
    res.status(404).render('your-404-view');
  }else{
    res.render('users', { title: 'All users' });
  }
});

您可以提供正则表达式:

router.get('/:id(\\d+)/', function (req, res, next){
    // body
});

router.get('/:id', function(req, res, next) {
  var id = req.params.id;
  if(id && string.match(/^[0-9]+$/) != null)}
    res.render('single-users', { title: 'Single ' + id });
  }else if(string.match(/^[0-9]+$/) == null){
    res.status(404).render('your-404-view');
  }else{
    res.render('users', { title: 'All users' });
  }
});
router.get('/:id(\\d+)/', function (req, res, next){
    // body
});