Регулярное выражение требований @QueryParam не работает должным образом

У меня есть простая конечная точка API, настроенная следующим образом:

/**
 *
 * @QueryParam(name="originLat", requirements="\d+", strict=true, nullable=false)
 * @QueryParam(name="originLng", strict=true, nullable=false)
 * @QueryParam(name="departureTime", requirements="/\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d/", strict=true, nullable=false)
 *
 * @param ParamFetcher $paramFetcher
 */
public function getWalkingJourney(ParamFetcher $paramFetcher)
{
    $dTime = $paramFetcher->get('departureTime');
    $oLat = $paramFetcher->get('originLat');
    $oLng = $paramFetcher->get('originLng'),
}

[QueryParam][1] для originLat прекрасно работает, если я передаю простое число, но более сложное регулярное выражение DelayTime всегда завершается ошибкой со следующим сообщением:

Parameter "departureTime" of value "2016-09-13 14:47:36" violated a constraint "Parameter 'departureTime' value, does not match requirements '/\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d/'"

Что кажется нелогичным, так как это правильное регулярное выражение.

Я что-то здесь не так делаю?

2 ответа

Вы добавляете разделители PCRE в requirements, что, вероятно, испортит ваше регулярное выражение.

Попробуй как * @QueryParam(name="departureTime", requirements="\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d", strict=true, nullable=false)

Проблема здесь была космической проблемой. Аннотации плохо обрабатывают пробелы, поэтому, когда пространство в регулярном выражении было заменено на \s, все работает нормально.

Не работает

 * @QueryParam(name="departureTime", requirements="\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d", strict=true, nullable=false)     *

Работает

 * @QueryParam(name="departureTime", requirements="\d{4}-[01]\d-[0-3]\d\s[0-2]\d:[0-5]\d:[0-5]\d", strict=true, nullable=false)     *
Другие вопросы по тегам