Express.js – 过滤URL中的数字和string

我想知道是否有可能检查一个Express.js URL查询的特定格式(Regexexpression式),在查询本身(无需调用callback)。

具体来说,我想执行一个不同的操作,具体取决于查询URL是string还是数字(如用户标识和用户名):

app.get('/:int', function(req, res){ // Get user info based on the user id. } app.get('/:string', function(req, res){ // Get user info based on the user name. } 

我可以在app.get的第一个参数中过滤数字,还是不可能,除了在callback中进行testing:

 /(\d)+/.test(req.params.int) /(\w)+/.test(req.params.string) 

您可以使用括号为命名参数指定模式:

 app.get('/:int(\\d+)', function(req, res){ // Get user info based on the user id. } app.get('/:string(\\w+)', function(req, res){ // Get user info based on the user name. } 

express路由器也接受regexp作为第一个参数。

 app.get(/(\d+)/, function(req, res, next) {}) app.get(/(\w+)/, function(req, res, next) {})