2012-03-22 124 views
1

我需要一個正則表達式來驗證貨幣。允許的值爲:用於驗證貨幣的PHP正則表達式

1209 
1889.0 
578247.00 
75646.50 
But not 44565.12 

逗號後面的第二個數字必須爲0.可用貨幣範圍爲0.1-9999999.9。 感謝您的幫助。

+0

因此,讓我看看,如果我有這個權利相當快。你想讓其他人爲你寫代碼嗎?你研究和學習的部分在哪裏,以避免每當你需要時運行到正則表達式? SO!==免費正則表達式 – rdlowrey 2012-03-22 06:26:21

+0

@rdlowrey他不需要別人來寫他的代碼,他只需要一個模式。就是這樣。 'SO!== Free Regex'這個我同意)) – shift66 2012-03-22 06:28:10

+0

我剛開始學習正則表達式。我可以理解模式的含義,但我現在還不能寫出自己的模式。而學習東西的最佳方式是提問問題的人誰會發現答案:) – 2012-03-22 06:45:17

回答

1

使用此圖案:([1-9]\d{,6}|0)(\.\d0?)?
使用此圖案1234.2將被允許使用。它可以嗎? 我編輯了模式,看看。
如果點之前有其他數字,則第一個數字不能爲0。所以編號必須以非零數字開頭,最多可以有6位數字,在點之前或者在點之前只有零點(本部分爲([1-9]\d{,6}|0))。 \d0?表示一位數字,其後可能爲零。 \.只是一個點。

+0

是的。沒關係 )。那麼{,7}呢?我不應該用{1,7}來代替它嗎? – 2012-03-22 06:41:27

+0

ha chishta))hesa kpoxem – shift66 2012-03-22 06:47:32

+0

4ei spasum vor stex el hayi khandipem :) – 2012-03-22 06:49:14

0

正如其他人所建議的正則表達式不是處理數字的最佳方式。

如果需要的話你可以到下面的代碼中添加額外的簡單範圍檢查,它會比試圖做到這一點與正則表達式

<?php 

$a = array(
1209, 
1889.0, 
578247.00, 
75646.50, 
44565.12 
); 

foreach ($a as $b) { 
    echo "$b - "; 
    echo ($b*100 % 50) == 0 ? 'PASS' : 'FAIL'; 
    echo PHP_EOL; 
}