嗨,我是 Express 新手,虽然我在互联网上搜索了字符串模式的完整解释,但我还没有找到任何内容。 path-to-regexp 的文档似乎也没有帮助。
具体来说,我试图解释文档中的这个(IMO 相当神秘的)评论:
The characters ?, +, *, and () are subsets of their Regular Expression counterparts.
参见http://expressjs.com/guide/routing.html
这些字符在正则表达式和字符串模式之间的行为有何不同?有人知道 Express 字符串中被视为特殊的字符的完整列表,并解释它们应该做什么吗?
干杯
最佳答案
这意味着您不能使用“常规”正则表达式,但在确定 ExpressJS 应用程序的路由时可以使用正则表达式的“子集”。
How differently do these characters behave between regexes and string patterns? Would anyone know of a complete list of characters deemed special in Express strings, with explanations about what they are supposed to do?
被视为特殊的字符是提到的这些字符,?、+、* 和 ()P
,这意味着,即使 ExpressJS 不完全支持正则表达式,这些字符 其行为与正则表达式的行为完全相同。
Express 路由文档已经为您提供了示例:
// will match acd and abcd
app.get('/ab?cd', function(req, res) {
res.send('ab?cd');
});
// will match abcd, abbcd, abbbcd, and so on
app.get('/ab+cd', function(req, res) {
res.send('ab+cd');
});
// will match abcd, abxcd, abRABDOMcd, ab123cd, and so on
app.get('/ab*cd', function(req, res) {
res.send('ab*cd');
});
// will match /abe and /abcde
app.get('/ab(cd)?e', function(req, res) {
res.send('ab(cd)?e');
});
如果这些示例还不够,并且您想深入了解,我建议您学习正则表达式:REGEX, best way to learn it
我还建议使用Regex101学习的时候。您可以测试上面示例中的正则表达式,它会在右上角向您解释。
示例:
再次请记住,在整个 Regex 特殊字符中,只有 ?、+、* 和 ()P
适用于 Express 路由。
关于javascript - ExpressJS : What's the difference between ? 、 +、 * 在字符串模式和正则表达式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948293/