2015-06-08 40 views
-2

我需要檢查一個值,如果它是數字並可以包含逗號。使用可選逗號檢查數值javascript

我試圖

var input=3433; 
var pattern=/^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$/; 
pattern.test(input); 

但它總是給我假的;

我不想使用$.isNumeric,因爲它不檢查逗號。

+0

你的意思是逗號而不是點?如果是這樣,它將暗示爲'/^[1-9] \ d {0,2}([\。,] \ d {3})* $ /' –

+0

其實我需要檢查數字399,090.00,但逗號和點是可選的。 – user1339913

+0

@user:你在'.'是千位分隔符還是','是小數點的地方嗎?從正則表達式來看,你似乎是。例如,你寫了一千零二十三點半還是「1,023.5」或「1.023,5」? –

回答

0

由於點的原因,您的示例var輸入與您的正則表達式不匹配。
你可以這樣做:

var input=3433; 
var pattern=/^[1-9]\d{0,2}(\.?\d{3})*(,\d+)?$/; 
// the dot is optional __^ 
pattern.test(input); 

此正則表達式匹配:

  • 123
  • 1234
  • 1.234
  • 123,45
  • 1234,567
  • 1.234,56
  • 1.234.567,89
1

假設你正在轉換時使用逗號作爲千位分隔符,這樣做是隻刪除逗號最簡單的方法:

var num = +str.replace(/,/g, ''); 
if (!isNaN(num)) { 
    // It's a valid number 
} 

如果你的語言環境使用.作爲千位分隔符,,作爲小數點(正如您的正則表達式似乎表明的那樣),因爲JavaScript總是以相反方式使用它們,所以我們首先需要更改字符串:

var num = +str.replace(/\./g, '').replace(/,/g, "."); 
if (!isNaN(num)) { 
    // It's a valid number 
} 
+0

@LShetty:LOL!確實。 :-) –