【问题标题】:node.js express routes using new RegExpnode.js 使用新的 RegExp 表达路由
【发布时间】:2014-08-08 03:34:12
【问题描述】:

为什么这个路由器可以工作

app.get(/regularExpression/, function (req, res, next) {
});

但这不起作用Cannot GET

var regularExpressionString = "regularExpressionString";    
var regularExpression = new RegExp(regularExpressionString);

app.get(regullarExpression, function (req, res, next) {
});

我需要第二个变体,因为我想根据 DRY 原则重用路由器字符串部分而不重复代码。但是当我使用/regularExpression/cannot concat strings like /regularExpressionString1 + regularExpressionString2/.

那么如何在 node.js express regex route 中连接字符串?

更新

如果我不使用\d\w 等特殊符号,new RegExp 就可以工作

例如,这种模式有效:

regex = new RegExp('/(32)teeth')

但这不是:

regex = new RegExp('/(\d+)teeth')

【问题讨论】:

  • 第二个变种也应该可以工作。确保在浏览器中导航到 /regularExpressionString,而不仅仅是 /regularExpression
  • @CuriousGuy 谢谢。像new RegExp('/regularExpressionString') 这样的简单正则表达式确实有效。但是当我尝试使用\d\s 时,它会失败。 Cannot GET。请看我上面的更新。

标签: express


【解决方案1】:

在使用RegExp 构造函数时,你应该转义\ 符号,所以它是:

regex = new RegExp('/(\\d+)teeth')

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2019-05-28
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多