// ex: http://example.com/john_smith
app.get('/^(a-z)_(0-9)', function(req, res) {
res.send('user');
});
// ex: http://example.com/john_smith/messages/1987234
app.get('/^(a-z)_(0-9)/messages/:id', function(req, res) {
res.send('message');
});
我为应用程序编写了上面的代码,我希望将用户名作为url变量传递给node.js,就像我要做的那样:$ username = $ _GET ['username'];用PHP。我不太擅长写正则表达式,所以我想看看是否有人能让我走上正轨。提前谢谢。
答案 0 :(得分:0)
您正在寻找req.params
,这是正则表达式中所有捕获组的数组。
捕获组从1
开始; req.params[0]
就是整场比赛。
答案 1 :(得分:0)
根据您的要求,您似乎不需要正则表达式。只需在规则中使用变量,如下所示:
// Grabs whatever comes after /user/ and maps it to req.params.id
app.get('/user/:id', function (req, res) {
var userId = req.params.id;
res.send(userId);
});
如果您想要更好的控制,可以使用正则表达式。要从表达式中获取您感兴趣的内容,请使用捕获组(通常表示为一组匹配的括号):
// Grabs the lowercase string coming after /user/ and maps it to req.params[0]
app.get(/^\/user\/([a-z]+)$/, function (req, res) {
var userId = req.params[0];
res.send(userId);
});
有点偏离主题,但这里有一个非常好的介绍来表达.js将帮助你更好地理解它(包括路线如何工作): http://evanhahn.com/understanding-express-js/