0

我有一个简单的 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'),
}

如果我传递一个简单的数字,originLat 的 [QueryParam][1] 工作正常,但更复杂的离开时间正则表达式总是失败并显示以下消息:

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/'"

这似乎违反直觉,因为这是正确的正则表达式。

我在这里做错了吗?

4

2 回答 2

0

这里的问题是空间问题。注释不能很好地处理空格,因此当正则表达式中的空格被替换为 \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)     *
于 2016-09-13T14:22:23.810 回答
0

您在 中添加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)

于 2016-09-13T13:59:59.607 回答