Php 如何应用正则表达式检查路由参数是否在数组中

Php 如何应用正则表达式检查路由参数是否在数组中,php,regex,laravel,Php,Regex,Laravel,我有这样的路线。我正在尝试检查route paramsocial是否为facebook、google或twitter Route::get('/login/{social}', 'Auth\LoginController@loginSocial') ->where('social',["facebbok","google","twitter"]); 上述路线不起作用。它需要正则表达式。请帮忙 如何检查此项?尝试以下操作: Route::get('/login/{social}', 'Au

我有这样的路线。我正在尝试检查route param
social
是否为
facebook
google
twitter

Route::get('/login/{social}', 'Auth\LoginController@loginSocial')
->where('social',["facebbok","google","twitter"]);
上述路线不起作用。它需要正则表达式。请帮忙

如何检查此项?

尝试以下操作:

Route::get('/login/{social}', 'Auth\LoginController@loginSocial')
->where('social','(facebook|google|twitter)');

路由实例上的
方法接受参数名和正则表达式,第二个参数不是正则表达式:

Route::get('/login/{social}', 'Auth\LoginController@loginSocial')
->where('social','(facebook|google|twitter)');

这是一个有效的RegExp

您没有说明
->where
的方法签名是什么,只是猜测一下:

Route::get('/login/{social}', 'Auth\LoginController@loginSocial')
->where('social', "/^(facebook|google|twitter)$/i");

希望这个条件对你有帮助

Route::get('/login/{social}','Auth\LoginController@loginSocial')
    ->where('social', 'facebook|google|twitter');

答案就在这里。以前我用它解决了我的问题。以前我解决了这个链接的问题。我也希望你