2013-11-29 12 views
0

試圖匹配是這樣的:CodeIgniter的路徑一致的兩個數可選小數

wrs/time/5/10或整數之間wrs/time/5.2/10.55或任何東西,上浮至兩個可選的小數兩個捕獲組。

一直在嘗試該協會致力於一個數,但兩組如下:\d{0,2}(\.\d{1,2})?

全路徑的嘗試:

$route['wrs/time/(\d{0,2}(\.\d{1,2})?)/(\d{0,2}(\.\d{1,2})?)'] = 'wrs/trange/$1/$2'; 

任何幫助非常感謝

+0

請問您可以編輯這個問題嗎?您得到了什麼?你期待什麼? –

+0

當我在其中一個項目中測試它時,您的代碼正常工作。 – Jeemusu

回答

1

您當前的正則表達式的作品,但放將全部數字分爲組1和組3(小數組也在組2和組4中)。

您可以通過將您的重寫更改爲'wrs/trange/$1/$3'來解決此問題。

或者你可以稍微改變你的正則表達式:

wrs/time/(\d{0,2}(?:\.\d{1,2})?)/(\d{0,2}(?:\.\d{1,2})?) 

通過改變(...)周圍的小數部分(?:...)你說沒有捕捉到小數點在自己的組,那麼你的號碼將在第1組和第2組像你期望的那樣。

在您的示例中,您需要將括號中的內容分組,以便您可以使用?使整個選項可選,但實際上並不希望該部分是捕獲組。

RegExr

+1

「{0,2} +」並不意味着「在0到2次之間,一次或多次」,而是「在0到2次之間,佔有慾」。 –

+0

是的,我意識到,當我輸入它時,我不知道「{0,2} +」實際上會做什麼 - 我確定它是無效的正則表達式。我不知道什麼東西可能是「所有格」(寫這個正則表達式的人也沒有),現在只是看了它,謝謝你的信息。 – OGHaza