我想改進以下函數中用於驗證付款金額的正則表達式,以允許最多一個前導零,但前提是它也包含兩個小數位,並且不是0.00(從而使調用parseFloat沒有實際意義)提高驗證付款金額的正則表達式
function isValidPaymentAmount(paymentAmt) {
return /^\d+(\.\d{2})?$/.test(paymentAmt) && parseFloat(paymentAmt) > 0;
}
我想改進以下函數中用於驗證付款金額的正則表達式,以允許最多一個前導零,但前提是它也包含兩個小數位,並且不是0.00(從而使調用parseFloat沒有實際意義)提高驗證付款金額的正則表達式
function isValidPaymentAmount(paymentAmt) {
return /^\d+(\.\d{2})?$/.test(paymentAmt) && parseFloat(paymentAmt) > 0;
}
要匹配一個正的非零量,你需要擴展選項,這樣它不會允許一個前導零後的任何兩個數字,所以像:
^((0?\.((0[1-9])|[1-9]\d))|([1-9]\d*(\.\d{2})?))$
我已經刪除了我的答案,我猜你投了票,因爲你評論了它不適用的一件事,但是真的,我做了幾乎所有的工作,你只是調整了以下內容:'/^((0,\.(([[[-9-9])|\d{2}))|([1-9]\d*(\.\d{2 })?))$ /' –
試試寫出來:
/^((0\.\d\d)|([1-9]\d*(\.\d\d)?))$/
但是如何省略0.00
?你可以做一個單獨的檢查。如果你真的想用正則表達式來做到這一點,則該部分可以寫,而不是\d\d
,作爲
[1-9]\d|\d[1-9]
所以
/^((0\.([1-9]\d|\d[1-9]))|[1-9]\d*(\.\d\d)?)$/
你的第二個正則表達式允許'0.0111111' –
希望現在修復。 – 2016-05-18 16:18:06
您可以處理此爲:
^(0?[1-9]\d*\.\d\d|[1-9]\d*)$
交替的第一部分處理前導零和小數,前導零是可選的,第二部分交替處理整數。如果你想允許零作爲輸入,那麼你可以添加第二個替代:
^(0?[1-9]\d*\.\d\d|[1-9]\d*|0)$
在你的情況下'0.0099'是否是一個有效的參數? – RomanPerekhrest
*最多隻有一個前導零,但前提是它也包含兩個小數位*聽起來像匹配'0111.00' - 真的嗎? – 2016-05-17 20:22:15
我懷疑只是'/ ^(?! 0 + \。0 + $)\ d +(?:\。\ d {2})?$ /'會做。 –