2014-01-09 37 views
0

我有一個檢查HTML輸入的值,如果它符合錢權形式的正則表達式:展開錢正則表達式檢查量

^(?=\(.*\)|[^()]*$)\(?\d{1,3}(,?\d{3})?(\.\d\d?)?\)?\€?$ 

現在我需要這樣,它也擴大了正則表達式檢查金額是否大於0.40歐元。

允許的例子:

25€ 
25 
25.00 
25.00€ 
25,00 
25,00€ 
0.99€ 
0.99 
0,99 
0,99€ 

不允許:

0.39 
0.39€ 
0,39 
0,39€ 
+0

後您驗證的格式,你可以放心地將其轉換爲數字值,並做一個簡單的比較(或更復雜的之一,當你的規則改變)。 –

+0

策略是檢查它是否是0 [] [4-9]或[1-9] \ d * [] –

+0

恐怕'0,99'不匹配您的正則表達式。 – Toto

回答

0

對我來說,你貼導致錯誤的結果(see here)模式,因爲不是所有的允許輸入的匹配。

這裏使用JS假設your're是另一個正則表達式,你可以使用,其中包括> 0.4檢查:

^(?:(?:[1-9][0-9]*(?:(?:.|,)\d{2})?)|(?:0(?:(?:.|,)(?:4[1-9]|[5-9]\d))))€?$ 

Regular expression visualization

Debuggex Demo
regex101 Demo

不包括0.40,因爲我將你的bigger than 0.40€解釋爲> 0.4

如果你的意思是>= 0.4你可以使用

^(?:(?:[1-9][0-9]*(?:(?:.|,)\d{2})?)|(?:0(?:(?:.|,)[4-9]\d)))€?$ 
+0

'[4-9] [1-9]'不會匹配0.90美分,您可能意思是[4-9] \ d – cDima

+0

@cDima謝謝!你是對的,它不會匹配任何尾隨零。但我把_bigger解釋爲'> 0.4',所以不包括'0.40'。我會在我的答案中添加兩個選項... –

+0

Sry,但我並沒有對我的例子非常準確......所以它需要允許所有貨幣價值超過0.40歐元,所以您不允許100歐元或1000歐元左右其他金額。 – inf3ction

0

這一個爲我工作,匹配所需的字符串。

/^(\d{1,3}([,\.][4-9]\d)?|([1-9]{1,3}([,\.]\d\d)?))\€?$/gm 

http://refiddle.com/h2f