4

我想知道是否可以在查询本身中检查 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)
4

2 回答 2

17

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

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.
}
于 2013-03-05T16:55:03.527 回答
3

express 路由器也接受正则表达式作为第一个参数。

app.get(/(\d+)/, function(req, res, next) {})
app.get(/(\w+)/, function(req, res, next) {})
于 2013-03-05T16:49:03.003 回答