Javascript Express.js路由器中的正则表达式
我试图在Express中找到一些关于正则表达式的文档,但是Express API中的信息非常稀少。我想做一个正则表达式匹配objectID。Express文档中给出了这个关于regex的示例Javascript Express.js路由器中的正则表达式,javascript,regex,node.js,express,Javascript,Regex,Node.js,Express,我试图在Express中找到一些关于正则表达式的文档,但是Express API中的信息非常稀少。我想做一个正则表达式匹配objectID。Express文档中给出了这个关于regex的示例 router.get(/^\/commits\/(\w+)(?:\.\.(\w+))?$/, function(req, res){ ... }); 我在我的路由器上尝试了以下方法,似乎效果不错 client.get('/staff/:id([0-9a-fA-F]{24})', function(
router.get(/^\/commits\/(\w+)(?:\.\.(\w+))?$/, function(req, res){ ... });
我在我的路由器上尝试了以下方法,似乎效果不错
client.get('/staff/:id([0-9a-fA-F]{24})', function(req, res) { ... });
但是有一些差异我无法理解
- 我的示例在
中,API中的示例不是。什么 这意味着什么?我的表达式是字符串而不是正则表达式吗“
- 我不使用:
或/^
。不太了解 我猜这是某种锚。我需要这个吗李>?$/
- 我不会逃避
我的URL的第一部分\
。这是我想要的吗 该怎么办/staff/:id
还有,有人知道在Express路由器中阅读regex的广泛资源吗。。。或者参数选项或者我在上面做的任何事情 值得阅读路由匹配的源代码,但这里是简短的形式
是一个JS字符串'abc'
是一个JS正则表达式。该字符串可用于创建正则表达式,这就是您正在做的。所以两者都是有效的。要查看差异,请尝试执行/abc/
和var-re=/abc/
var-re=new RegExp('abc')
是起始锚点,^
是结束锚点<代码>^abc将匹配“abc”、“abcde”而不是“zabcd”,因为它需要以“abc”开头$
将匹配“abc”、“zabc”,但不匹配“abcd”,因为它需要以“abc”结尾abc$
- 当您使用以
开头并以/
结尾的实际RegExp表达式时,如果您想在RegExp中使用斜杠,则需要对其进行转义,否则解释器如何知道这是斜杠字符而不是RegExp的结尾?如果您使用的是字符串,它知道它不是,因此您不需要转义/
"abc".match(/abc/); // works
"abc".match('/abc/'); // fails because there are no slashes
"/abc/".match('/abc/'); // works
"/abc/".match(/abc/); // works because "abc" is in there
当然,如果你愿意的话,你可以避开斜杠
"/abc/".match('\/abc\/'); // works
"abc".match('\/abc\/'); // fails
请去掉复选标记,因为我认为我的答案是关于字符串部分的错误。当字符串传入时,express.js似乎有不同的处理方式。是的,我也意识到了这一点。尽管如此,您还是给了我很多关于regex部分的好信息(=)
:id
部分需要使用param