检查url是否包含express中的数字

问题描述 投票:0回答:4

我在nodejs中创建一个中间件函数并表达js框架,我想检查url是否包含一个数字或者不是这样的

/发票/ 21或/发票/ 45

所以我想做这样的事情

 if (req.path.startsWith('/invoices/[^0-9]') {
    next();
  }  

但我收到错误我仍然无法做到这一点,任何人都可以提示。

javascript node.js express
4个回答
0
投票

最快的方法是检查RegExp

if(RegExp(/^\/invoices\/[0-9]/).test(req.path)){
    // do something
}

0
投票

你不能使用这样的RegExp。 startsWith只接受一个字符串。此代码创建一个RegExp,并使用match来检查字符串是否与RegExp匹配。

if (req.path.match(new RegExp('/invoices/[^0-9]'))) { // create a regexp and check if it matches
    next();
} 

0
投票

startsWith接收字符串而非正则表达式。在这种情况下你可以使用match

var str = '/invoices/120';
if (str.match(/^\/invoices\/\d+/)) { // return truly value
  next(); // gets executed
} 

var str = '/invoices/abc';
if (str.match(/^\/invoices\/\d+/)) { // return falsy value
  next();
} 

你可以在jsfiddle查看。


0
投票
  const re = /^\/invoices(\/.*)?\/\d*\//
  if(re.test(req.originalUrl.toLowerCase())) {
    // include a number
  }

//'/invoices/kk/190/foo' will pass
//'/invoices/kk/190k/foo' won't pass

你使用什么版本的快递?我只能通过req.originalUrl访问路径,没有req.path。

© www.soinside.com 2019 - 2024. All rights reserved.