Регулярное выражение в регистре маршрута не работает для параметров - PullRequest
1 голос
/ 08 мая 2019

Я работаю с пользовательской конечной точкой WordPress REST API и хочу принимать значения string и int для параметра round. Это потому, что раунд может быть 1 (т.е. раунд 1) или semi-final, final и так далее.

Я добавил эти объявления Regex в код параметра, но до сих пор он возвращает 404 в конечной точке (стандартное поведение в случае сбоя конечной точки)

register_rest_route('wp/v2/statistics', 'rounds/(?P<season>\d+)/(?P<round>[a-zA-Z0-9-]\d+)', [
    'methods'  => 'GET, POST',
    'callback' => 'serveRoundsRoute',
]);

Кто-нибудь может мне помочь? Некоторые примеры запросов приведены ниже:

  • Раунд 10: / статистика / раунды / 2019/10
  • Полуфинал: / статистика / раунд / 2019 / полуфинал

Кроме того, при наличии regex раунд подачи int также не выполняется, но работает с простым параметром (?P<round>\d+).

1 Ответ

0 голосов
/ 08 мая 2019

Шаблон \d+ соответствует 1+ цифрам, а [a-zA-Z0-9-]\d+ соответствует букве, цифре или дефису, за которыми следуют 1+ цифры. Вы можете удалить \d из второго регулярного выражения и использовать [a-zA-Z0-9-]+ для сопоставления любых 1+ буквенно-цифровых / дефисных символов, но, похоже, вы можете использовать более общий подход и сопоставить любые символы, кроме /.

Заменить

(?P<season>\d+)/(?P<round>[a-zA-Z0-9-]\d+)

с

(?P<season>[^/]+)/(?P<round>[^/]+)

Шаблон [^/]+ соответствует 1 или более символам, отличным от косой черты.

...