2015-05-21 98 views
0

我有正則表達式表達式允許用戶輸入數字decimal or without decimal。在金額爲comma(,)的時候面臨問題。我想要允許comma(,)的數量。Javascript正則表達式允許逗號的數量

這裏是我的正則表達式

var regexp = new RegExp("^\\$?(?=.*[1-9])(?:[1-9]\\d*\\.?|0?\\.)\\d*$") 

上述表達式可與以下金額

123 
1.232 
112.2 
$12.0 
$0.1 

它失敗,以下

$42,529.41 
$4,529.41 

我怎麼能允許量逗號?金額必須大於零。

+0

你想匹配'123,'? –

+0

上面的表達式如何匹配'123,'?它沒有',' – vks

+0

@AvinashRaj看到我的編輯。 –

回答

1
^\\$?(?=.*[1-9])(?:[1-9]\\d*,?\\d*[.]?|0?[.])\\d*$ 

          ^^ ^^ 

嘗試this.See演示。

https://regex101.com/r/nD5jY4/1

+0

偉大的工作:)謝謝 –

+0

@nhahtdh它的一個簡單的修復.............. https://regex101.com/r/nD5jY4/2 – vks

1

使用一個模式允許逗號在整數部分,並使其重複零次或多次。添加一個負向超前不匹配00.000

var regexp = /^\$?(?!0+(?:\.0+)?$)\d+(?:,\d+)*(?:\.\d+)?$/m; 

OR

^(?=.*?[1-9])\$?\d+(?:,\d+)*(?:\.\d+)?$ 

DEMO

+0

這看起來像一個比公認的答案稍微更健全的解決方案。 – nhahtdh

+0

你的意思是第二個?他的正則表達式不符合'00.001' –

+0

這兩個解決方案都考慮到可以有多個逗號 - 由vks提供的解決方案缺少,並且可以稍微修改以強制千位分隔符(3位數字)。 – nhahtdh

相關問題