2011-05-15 103 views
0

我真的很糟糕的正則表達式,並想知道是否有人可以幫助我這個。我需要接受允許$,€和£的值,但不要求最小5.00(.00不是必需但允許)和2,000(逗號不是必需但允許)。正則表達式對於貨幣

的有效輸入

$5 
€5 
£5 
$5.00 
5 
1000 
1,000 
1,000.00 
+0

最低5.00或2,000? – sawa 2011-05-15 20:35:39

回答

2

如果你想允許像5.32£值的一些例子:

^[$€£]?(\d+([\.,]\d{2})?)$

如果不是:

^[$€£]?(\d+([\.,]00)?)$

一旦你」已檢查它是否格式正確使用正則表達式,你可以繼續檢查5 < int(value) < 2000是否使用了第一個返回的正則表達式組。

編輯:已經想過這個問題,這裏有一個正則表達式,這將花費太多的邊界的​​護理:

^[$€£]?((([1-5],?)?\d{2,3}|[5-9])(\.\d{2})?)$

+0

逗號爲數千;不是小數部分。 – 2011-05-15 20:32:44

+0

嗯,我試過你的新編輯,當我測試模式時,我仍然得到錯誤的回報。 – Chad 2011-05-17 01:44:07

0

RegexMagic救援:

\b(?:[$£€])? *(?:2,?000|1,?[0-9]{3}|[1-9][0-9]{1,2}|[5-9])(?:\.[0-9]{1,2})?\b 

你是否同意這樣做的所有這在一個正則表達式(儘可能)不是一個非常好的主意?

+0

這只是在客戶端進行。 – Chad 2011-05-16 00:01:46