表示正则表达式字符串表示法
express regular expression string notation
我是Javascript和正则表达式的新手,所以我有点纠结于如何使路由匹配以/user/....
开头的所有URL
我可以做app.get(/user/, function(req,req){ /*stuff*/});
但我想知道,如果用字符串代替regex对象,我该怎么做。例如
app.get("/user/:id", function(req,req){ /*stuff*/});
仅匹配具有"user"
和一个参数的URL。我该如何编码,使其匹配"user"
和N参数
使用字符串或javascript正则表达式对象有什么区别?我发现,即使在字符串表示法中,我也可以做这样的事情。。。
app.get("/user/:d([a-z]*)", function (req, res) {
//more stuff
});
我不确定是否有方法传递单个路由N参数。然而,你可以做一些不同的路线,如:
var userController = requrie('./user_controller'),
isAuthenticated = require('./middleware/is_authenticated');
app.get("/user/:id/address/:addressId", userController.addressById);
app.get("/user/:id/address", userController.address);
app.get("/user/:id", userController.index);
为了在执行控制器操作之前检查类似身份验证的东西,您可以使用中间件进行检查,并将其作为控制器操作之前的第二个参数,看起来像:
app.get("/user/:id", isAuthenticated, userController.index);
在上面的例子中,你的user_controller.js
看起来像这样:
module.exports = {
index: function(req, res) {
// index action logic
},
address: function(req, res) {
// address action logic
},
addressById: function(req, res) {
// addressById action logic
}
};
这将允许您将类似但不同的路由传递给不同的控制器操作,这将使您对如何分类不同的路由有更多的控制权,因为这更多的是路由器的工作,而不是控制器的工作。
还有一点需要注意,路线的顺序很重要。通常最好将一组路线中更具体的路线放在第一位,将更通用的路线放最后。
希望能有所帮助!
相关文章:
- 如何使用 javascript 在正则表达式替换中表示大括号
- 从正则表达式文本中获取正则表达式字符串表示的最佳方式
- 正则表达式表示用连字符分隔的浮点范围(用于年份和月份)
- 用于将特定“.”表示法替换为“_”的正则表达式
- 正则表达式表示“可能”以开头,但“必须”紧随其后
- 如何在正则表达式中表示“不包括边界的此字符”
- 替换为正则表达式表示最小/最大十进制长度
- 正则表达式表示数字,不超过 3 位数字,十进制可以是 .50 或 .00
- 正则表达式表示正数和 -1 Javascript
- 正则表达式提取带有嵌套函数(javascript)的函数表示法
- 正则表达式表示 JavaScript 中具有特定长度的货币
- 正则表达式表示带逗号的浮点数
- 正则表达式表示 1 个或多个整数,后跟非整数
- 捕获正则表达式的一个或多个匹配项(由捕获组外的字符表示)
- 表示正则表达式字符串表示法
- 我将使用什么正则表达式来表示07X XXXX XXX作为一个数字
- 用逗号和空格表示验证号的正则表达式
- 如何用正则表达式表示0.05的马赫数倍数
- 正则表达式表示介于5和7之间的数字,它也接受空格
- 正则表达式表示大写和小写+数字或其他非字母