2016-10-05 52 views
0

我試圖使用preg_match來匹配以零開頭的數字以指示無效輸入。數字如01,0023,00.4無效;但是,諸如0.12之類的數字是有效的。輸入將是一個計算器條目,如09 * 108 + 0.19 + 4009。在這種情況下,由於09,該表達式將無效。PHP - preg_match - 如何匹配以零開頭的數字

到目前爲止,我的表情看起來像:preg_match("/[^1-9]+0[0-9]+/", $subject)

我試圖做的是比賽時零之前的數字任意字符串,但也沒有被數字另一個字符串之前。因此109有效,但1 + 09無效。但它不適用於像1 + 4009這樣的情況。

+2

從零開始='^ 0'。 RegEx'^ 0 \ d + $'。不以零開始'^ [^ 0]' – Tushar

+1

也許'0 \。\ d +(* SKIP)(* FAIL)| \ b0 \ d +'。 – chris85

+0

哇!謝謝@ chris85,你的回答很好。我從來沒有見過之前使用的SKIP,FAIL表達式。你能解釋一下他們的意思嗎? –

回答

1
preg_match('/\b0[0-9]+(?:\.[0-9]+)?\b/', $subject) 

\b字邊界。