2014-10-09 41 views
1

我想匹配:正則表達式匹配幣值(帶小數點2位),但不爲0

0.01 
0.12 
1.00 
1.12 
12.00 
12.34 

但不是:

0 
0.00 
.00 
.12 

爲了得到這不可能是零價值。

我寫了這個正則表達式: /(^\d{1,}\.\d{2}$)|(^\d{1,}$)/

但是它匹配:

0 
0.00 

,我想消除。

我也試過排除規則,如^(?!0)(?!0\.00)\d{1,}\.\d{2}|\d+$但沒有成功。

回答

2

要匹配帶有小數點2位的值,但不爲0:

^(?![.0]*$)\d+\.\d{2}$ 

lookahead檢查,如果字符串不包括僅0.

\d+\.\d{2}確保所需格式:One or more數字後跟.後跟2位數字。

Test at regex101.com(見右側說明)


中,也允許12.2最後部分更改爲\.\d{1,2},並使其可選:

^(?![.0]*$)\d+(?:\.\d{1,2})?$ 

Test at regex101.com

+0

不錯!!!!!!!!!!!!!!!! 1 – vks 2014-10-09 13:40:55

+0

撤銷我接受的答案。這是很好的,因爲@ vks陳述 – 2014-10-09 13:49:57

+0

很高興它適合你:)和@ vks高興你喜歡它! – 2014-10-09 13:51:10

1

你可以試試下面的正則表達式。

^(?!0(\.00)?$)\d+(?:\.\d{2})?$ 
在開始

DEMO

負先行將不允許00.00

相關問題