我有一个简单的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]可以正常工作,但更复杂的departureTime正则表达式总是失败并显示以下消息:
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/'"
这似乎是反直觉的,因为这是正确的正则表达式。
我在这里做错了吗?
答案 0 :(得分:0)
您在requirements
中添加了PCRE delimiters,这可能会搞乱您的正则表达式。
尝试* @QueryParam(name="departureTime", requirements="\d{4}-[01]\d-[0-3]\d [0-2]\d:[0-5]\d:[0-5]\d", strict=true, nullable=false)
答案 1 :(得分: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) *