我很接近,但我需要一些幫助來完成正則表達式。這裏是我們的目標:3到50之間的美元金額正則表達式
能成功:
- 10.05
- 3.00
應該失敗:
- 55.99(> 50)
- 3.001 (不能有 「1」 的端部)
- 0.50(< 3)
- 0.99(< 3)
- $ 50(不能有 「$」)
- 5.2(如果小數,必須有後2位)
這裏的正則表達式我有這麼遠,但它並不完全做到以上正確:
^([1-4][0-9]|50|[3-9])+(\.[0-9][0-9])?$
任何人都可以共享answe R'謝謝!
我很接近,但我需要一些幫助來完成正則表達式。這裏是我們的目標:3到50之間的美元金額正則表達式
能成功:
應該失敗:
這裏的正則表達式我有這麼遠,但它並不完全做到以上正確:
^([1-4][0-9]|50|[3-9])+(\.[0-9][0-9])?$
任何人都可以共享answe R'謝謝!
我發現了一個online utility當輸入範圍的下限和上限您希望返回整數正則表達式。我將它用於.
之前的部分,限制爲3-50,之後的部分爲.
,限制爲0-99。結果如下:
^0*([3-9]|[1-4][0-9]|50)(\.[0-9]{2})?$
^(50(\.00)?|([1-4][0-9]|[3-9])(\.[0-9][0-9])?)$
有兩個問題。首先,即使之前的值是50,你也允許小數點後的非零值。因此,我將它分離出頂層。其次,只需刪除+
。因爲由於它,你可以有更多的數字(例如通過鏈接50
和43
)。
但是,正如Bergi在評論中提到的那樣,最好只檢查格式,並單獨進行範圍檢查(不使用正則表達式)。這將是格式檢查:
^\d+(\.\d\d)?$
感謝您的快速回復,但頂級正則表達式允許我的一些失敗情況。 – Mark
@標記哪些具體?使用PHP,您的所有失敗案例都會在我的機器上失敗。 –
不要使用數學正則表達式。檢查輸入格式,然後解析數字並檢查你的條件 – Bergi
'010.00'呢? –