Express.js - 过滤URL中的数字和字符串

时间:2013-03-05 16:21:37

标签: node.js filter express

我想知道是否可以在查询本身中检查Express.js URL查询的特定格式(正则表达式)(不需要调用回调。)

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

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的第一个参数中过滤数字,或者除了在回调中进行测试外,它是不可能的:

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

2 个答案:

答案 0 :(得分:16)

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

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.
}

答案 1 :(得分:3)

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

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