javascript - 表达正则表达式字符串表示法

标签 javascript regex node.js express

我对 Javascript 和正则表达式很陌生,所以我有点困惑如何使路由匹配所有以 /user/.... 开头的 url。

我可以做 app.get(/user/, function(req,req){/*stuff*/});

但我想知道如果我使用字符串代替正则表达式对象,我该怎么做。例如

app.get("/user/:id", function(req,req){ /*stuff*/});  

仅匹配带有“user” 和一个参数的网址。我该如何编码才能匹配 "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);

为了在执行 Controller 操作之前检查身份验证之类的内容,您可以使用中间件,并将其作为 Controller 操作之前的第二个参数,如下所示:

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

这将允许您将相似但不同的路由传递给不同的 Controller 操作,这将使您对如何排序不同的路由有更多的控制,因为无论如何,这更多是路由器的工作而不是 Controller 的工作。

还要注意的一件事是路线的顺序很重要。通常最好将一组路由中的更具体的路由放在前面,将更通用的路由放在最后。

希望有帮助!

关于javascript - 表达正则表达式字符串表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25677661/

相关文章:

javascript - 使用空值集触发 Bootstrap 工具提示

regex - 通用新行 (qr/\R/) 找到哪些字节?

regex - htaccess 根据前两个后两个字符重写规则

javascript - 如何在不增加子表达式计数的情况下匹配子表达式中的 n+ 个实例?

node.js - 使用 exec 的 mongodb 错误处理

javascript - NOOB自定义模块事件

javascript - 检查 string1 是否包含 string2 而不知道哪个是 1 或 2

javascript - 使用 .replaceWith() jQuery

javascript - 删除JQUERY中php最后插入的元素

node.js - 包.json : how to test if node_modules exists