所以我嘗試使用下面的正則表達式匹配的有效價格正則表達式:排除基於非捕獲組的結果?
^\$[1-9]\d{0,2}(?:\,\d{3})?(?:\.\d{2})?
(從另一個問題在這裏得到的對SO)
約束匹配福利模式:
$1.00 <= price <= $999,999.99
- 不需要小數位(
$1
有效,因爲是$1.00
) - 單位後的小數位無效(
$1.1
,$2.9
,等等。) - 3+位數後小數位無效(
$1.111
,$2.999
,等等。)
上述圖案努力處理前兩個約束,但不處理其他約束。問題是,在(3)或(4)的情況下,小數點前的價格部分是匹配的。
例:
$100,000.4 matches to $100,000
$200,000.444 matches to $200,000.44
我如何在的情況下修改此使(3)或(4)整個字符串不匹配?
是否有辦法使它工作,如果價格不一定由空白分開?就像一個價格結束並直接流入下一個? – Scherf
當然!已經更新了答案。請查看 –
由於下一個價格的美元符號$被以前的匹配消耗,它將錯過一些事件。 – gdlmx