快递路由器不使用包含正则表达式的路由

时间:2016-05-28 08:28:46

标签: regex node.js express

我是节点的新手,无法创建一个简单的路由,其中​​包含参数的正则表达式

// student.js - route file for route /student
app.get('/student/:/^[a-z0-9-]+$/', function(req,res){
    res.send('student found');
});

当我点击localhost:3000/student/student-slug时,它会显示Cannot GET /student/student-slug

另外两个问题

1)如何获得正则表达式的param,通常我们可以这样做var _student = res.param.student_name但我无法考虑正则表达式

2)如何设置可选参数,让我们说分页,路由就像

/list/students/会显示最后一个x学生的列表,但/list/students/48会将该值偏移到第48行

这个问题可能重复,但我无法找到答案

1 个答案:

答案 0 :(得分:0)

在传递给请求之前,您需要encode uri字符串,并且在路由处理程序中需要decode

用法很清楚:

encodeURIComponent(str);

用于解码使用:

decodeURIComponent(str);

check the official documentation here

也可以在escape vs encode vs encodeURIComponent

上查看此博文