2015-08-28 48 views
2

在一個Symfony的控制器我使用註釋只匹配的URI像的Symfony @ROUTE(「/(編號)」)正則表達式的要求不工作

.../integer-integer 
or 
.../integer 

我的代碼

/** 
* @Route("/notification/old/{id}", requirements={"id" = "(^\d+$)|(^\d+\-\d+$)"}) 
* @Method("GET") 
*/ 

根據結束Regex101我的模式是正確的。 然而,Symfony的返回找到的 「GET /通知/老/ 1-1」
未找到路線

沒有路由 「/ GET /通知老/ 1」

我是什麼做錯了?

+0

也許,它不會幫助,但是請注意,您可以將正則表達式編寫爲'^ \ d +(?: - \ d +)?$'。 –

+0

大聲笑的工作。 在我的理解或操作符不工作在symfony。 因爲他們擁有的'^ \ d + $'和'^ \ d + \ - \ d + $'確實有效。 – wxkin

回答

1

正則表達式應該導致問題。你可以擺脫交替,捕獲組,並將其簡化爲

^\d+(?:-\d+)?$ 

這1個或多個數字從一個字符串的開頭匹配,然後選擇性地匹配一個連字符和1個或多個數字高達字符串的結尾。