можете ли вы попробовать вот так: path: /blue/(.*) - Василий Ангапов 2 дня назад
Я хотел бы добавить несколько слов объяснения к правильный ответ Василия Ангапова, опубликованный в комментариях к вопросу, чтобы каждый мог понять, почему /blue/(.*)
действительно работает и почему /blue|/(.+)
не будет работать и не должен использоваться в этом контексте.
Давайте использовать Онлайн-интерпретатор regexp , который содержит подробное объяснение каждого символа, используемого в нашем выражении, и позволяет поэкспериментировать с сопоставлением различных строк с данным регулярным выражением:
/blue|/(.+)
в основном означает, что мы хотим сопоставить строку /blue
или любая другая ненулевая строка. .
означает любой символ, кроме окончания строки, а знак +
- это квантификатор, который сообщает нам, сколько раз предыдущий символ может встречаться в нашей строке. +
обозначает одно или несколько вхождений предшествующего символа, поэтому выражение .+
соответствует строке, состоящей из одного или нескольких различных символов (исключая разрыв строки).
Если вы создаете входной путь для сопоставления с определенной строкой, вы обычно не хотите использовать |
. В этом конкретном контексте это будет означать, что вы хотите сопоставить /blue
или anything else
как /green
, /yellow
, /red
..., что не имеет большого смысла в этом контексте. Вы, скорее, заинтересованы в том, чтобы сопоставлять пути только начиная с /blue
, например /blue/index.html
, /blue/second.html
или blue/third.php
или просто /blue
. Ваш путь может выглядеть следующим образом:
/blue/(.+)
, и он будет соответствовать /blue/index.html
, /blue/1
, но не /blue
в одиночку, поскольку .+
соответствует один или несколькоПроизвольные символы .
.*
, с другой стороны, соответствуют ноль или более произвольных символов , поэтому выражение /blue/(.*)
будет соответствовать:
/blue
, /blue/index.html
, /blue/
, /blue/1
и т. Д.