這意味着你不能使用「常規」規則表達式,但在確定的ExpressJS應用的路線,你可以使用正則表達式的「子集」。
這些字符在正則表達式和字符串 模式之間有何不同?有誰會知道一個完整的字符列表,被視爲 Express字符串中的特殊字符,並解釋了它們應該做什麼 ?
字符視爲特別是被提及的是,這些的人,?, +, *, and()P
,這意味着,即使ExpressJS好好嘗試一下完全支持正則表達式時,這些字符的行爲完全一樣,他們會表現,如果這是一個正則表達式。
的快速路由文檔已經給你舉例:
// 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
將在快速路由工作。
0或1,1或更多,0或更多 – dandavis
儘管如此,「*」似乎不是嚴格的0或更多。它似乎是一個真正的通配符,就像'/.*/'。這些微妙的差異是我所追求的 –
如果你使用它來得出結論,只要對[Express Route Tester](http://forbeslindesay.github.io/express-route-tester/)進行評論,我認爲它或者過時或者無法正常工作。我輸入了路由:'*'和路徑:'/ path/value',它們*應該*匹配,當我在真正的快速應用中測試它時也會這樣做,但是在結果中顯示它不匹配。 – laggingreflex