在開發過程中,多多少少都會遇到金額值得校驗,被測試員攆着屁股走,每次都給我提這個問題,不善其擾。簡單正則已經無法做到排除-0,0,0.00,01,0001 等值。因此寫一個通用函數來判斷是否為正確得金額格式:
/** * 金額校驗函數 * @param $value * @param bool $isZero * @param bool $negative * @return bool */ function isAmount($value, $isZero=false, $negative=false){ // 必須是整數或浮點數,且允許為負 if (!preg_match("/^[-]?\d+(.\d{1,2})?$/", $value)){ return false; } // 不為 0 if (!$isZero && empty((int)($value*100))){ return false; } // 不為負數 if (!$negative && (int)($value * 100) < 0){ return false; } return true; }