我需要檢查一個值,如果它是數字並可以包含逗號。使用可選逗號檢查數值javascript
我試圖
var input=3433;
var pattern=/^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$/;
pattern.test(input);
但它總是給我假的;
我不想使用$.isNumeric
,因爲它不檢查逗號。
我需要檢查一個值,如果它是數字並可以包含逗號。使用可選逗號檢查數值javascript
我試圖
var input=3433;
var pattern=/^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$/;
pattern.test(input);
但它總是給我假的;
我不想使用$.isNumeric
,因爲它不檢查逗號。
由於點的原因,您的示例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
假設你正在轉換時使用逗號作爲千位分隔符,這樣做是隻刪除逗號最簡單的方法:
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
}
@LShetty:LOL!確實。 :-) –
你的意思是逗號而不是點?如果是這樣,它將暗示爲'/^[1-9] \ d {0,2}([\。,] \ d {3})* $ /' –
其實我需要檢查數字399,090.00,但逗號和點是可選的。 – user1339913
@user:你在'.'是千位分隔符還是','是小數點的地方嗎?從正則表達式來看,你似乎是。例如,你寫了一千零二十三點半還是「1,023.5」或「1.023,5」? –