2016-08-14 21 views
1

我想驗證一個有兩位小數的double,但我無法實現。 這是正則表達式,我tryied錯誤,我得到了:Laravel雙驗證正則表達式不工作

首先嚐試:

$validation = ['price' => 'regex:[0-9]+(\.[0-9][0-9]?)?']; 

錯誤:

preg_match(): Unknown modifier '+'

第二個嘗試:

$validation = ['price' => 'regex:[0-9]+(\.[0-9][0-9]?)?']; 

錯誤:

preg_match(): Delimiter must not be alphanumeric or backslash

第三次嘗試:

$validation = ['price' => 'regex:\d+(\.\d{2})?|\.\d{2}']; 

錯誤:

preg_match(): Delimiter must not be alphanumeric or backslash

我得到了所有來自這個問題正則表達式:Simple regular expression for a decimal with a precision of 2

我在做什麼錯?或者有任何其他方式來驗證Laravel中有兩位小數的雙精度型?

+1

嘗試'$驗證= [「價格」 =>「正則表達式:/ [0-9] +(\。[0-9] [0-9]?)?/'];' –

+0

@WiktorStribiżew謝謝你的作品,但它有什麼辦法防止超過兩位小數? – pableiros

+1

你的意思是隻允許說'1.22'而不是'1.233'?試試'$ validation = ['price'=>'regex:/^[0-9] +(\。[0-9] [0-9]?)?$ /'];' –

回答

2

你需要使用正則表達式分隔符,最常見的分隔符是/.../。此外,爲確保您的整個字符串匹配,需要錨,^在開局就錨和$末到錨:

$validation = ['price' => 'regex:/^[0-9]+(\.[0-9][0-9]?)?$/'];