我的问题是,使用这个路由定义:
Route::match(array('GET', 'POST'), '/create/{caller?}', 'create')
->name('elot.create')
->where('caller', '([sh|br]+-[0-9]+)');
- http://localhost/create/shxyz-1234 -- works*
- http://localhost/create/brxyz-1234 -- works*
但我不希望事情变成这样。我只想要这样的比赛
http://localhost/create/sh-26627-- not shxyz-1234
http://localhost/create/br-1525-- not brxyz-1234
1条答案
按热度按时间mwyxok5s1#
您可以使用单词边界
\b
来防止部分单词匹配,并使用分组而不是方括号(表示字符类)。该分组不必重复,因为交替
|
匹配备选方案之一。由于您只进行匹配,因此可以使用非捕获组,表示为(?:
请参见regex demo。