嗨,我是Express的新手,虽然我已经在互联网上搜索了字符串模式的完整解释但我还没找到。 path-to-regexp的文档似乎也没有帮助。
具体来说,我试图在文档中解释这个(IMO相当神秘)的评论:
字符?,+,*和()是其正则表达式副本的子集。
请参阅http://expressjs.com/guide/routing.html
这些字符在正则表达式和字符串模式之间的表现有何不同?有人会知道Express字符串中特殊字符的完整列表,并解释它们应该做什么吗?
干杯
答案 0 :(得分:1)
从示例中看,+
和?
的行为正如您在正则表达式中所期望的那样,*
等同于正则表达式.*
。对于字符串模式而言 - 实际的正则表达式就像你期望的那样。
答案 1 :(得分:0)
这意味着您不能使用“常规”正则表达式,但您可以在确定ExpressJS应用程序的路由时使用正则表达式的“子集”。
这些字符在正则表达式和字符串之间的表现有多么不同 模式?有谁知道一个完整的字符列表被认为 特殊的快速字符串,解释它们是什么 应该做什么?
被认为是特殊的字符是提到的那些字符?, +, *, and ()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。您可以从上面的示例中测试正则表达式,它会在右上角向您解释。
示例:
同样,请记住,从整个正则表达式特殊字符开始,只有?, +, *, and ()P
才能用于Express路由。