Регулярные выражения Laravel Routes начинаются с символа @ - PullRequest
0 голосов
/ 17 мая 2018

Мне нужно создать маршрут, который отвечает на любую строку, начинающуюся с символа '@'. Маршруты как следующие примеры:

www.mywebsite.com/@john  
www.mywebsite.com/@jack  
www.mywebsite.com/@something

Итак, я написал:

Route::get('{something}','SomeController@someMethod')->where('something','/@^/');

Но когда я проверяю это, я сталкиваюсь с 404 не найденными страницами.

Какое правильное регулярное выражение для этого?

Ответы [ 4 ]

0 голосов
/ 17 мая 2018

Это также будет работать:

Route::get('@{something}', 'SomeController@someMethod');
0 голосов
/ 17 мая 2018

Вы можете написать это

Route::pattern('tag', '@[a-zA-Z]');

Route::get('{tag}', 'SomeController@someMethod');

Таким образом, вы разделяете логику регулярного выражения и маршрута, и все будет работать так, как вы хотите

0 голосов
/ 17 мая 2018

Обратите внимание, что шаблон @^ означает, что @ должен сопровождаться началом строки, что невозможно, и шаблон никогда не соответствует какой-либо строке. Шаблон '^@' утверждает позицию в начале строки, и только там он пытается соответствовать @.

Кроме того, обычные / разделители регулярных выражений должны быть удалены из этого шаблона, поскольку они рассматриваются здесь как часть шаблона.

Итак, в вашем случае вы можете просто поменять якорь и @ char:

Route::get('{something}','SomeController@someMethod')->where('something','^@');
0 голосов
/ 17 мая 2018
Route::get('/{tag}', 'SomeController@someMethod')->where('tag', '^@.*');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...