2009-08-20 34 views
1

我正在尋找一種很好的方法來檢查用戶輸入的可選逗號的正確位置的數字。如何檢查用戶輸入的數字中逗號的正確位置?

例如

1,000,000.00 = correct 
1000000  = correct 
1,00,000.00 = incorrect 
,100,000  = incorrect 

所以看起來我需要檢查看到,至少有一個號碼的左側和3個數字的逗號權,或者是有一個正則表達式的方法做這個?

+0

誰在乎?逗號使人類讀者更容易破譯多少數字......而不是政治家是華盛頓特區的關懷。 – xcramps 2009-08-20 19:00:58

回答

2

你打算如何使用它?換句話說,爲什麼要關心?爲什麼不去掉所有的逗號並將其轉換爲數字類型?

+0

是的,這也是我的感覺......這聽起來很可疑,就像銀行網站用來防止你輸入一個沒有小數點後兩位數的煩人檢查一樣。雖然我想,如果你期望來自國際用戶的一些流量,檢查「10,00」可能是有用的,然後剝離逗號... – Shog9 2009-08-20 18:49:48

+0

我有大約1小時來執行現有的驗證中的東西,並使用類似的第一個上面的答案但我同意你的評論,現在我有更多的時間來處理這個問題,這就是我要實現的。 – Matt 2009-08-24 12:30:00

5
/^(?:\d+|\d{1,3}(?:,\d{3})*)(?:\.\d+)?$/ 
2

檢查出這個網站:http://blog.stevenlevithan.com/archives/commafy-numbers

下面的代碼片段:

String.prototype.commafy = function() { 
    return this.replace(/(^|[^\w.])(\d{4,})/g, function($0, $1, $2) { 
     return $1 + $2.replace(/\d(?=(?:\d\d\d)+(?!\d))/g, "$&,"); 
    }); 
} 

Number.prototype.commafy = function() { 
    return String(this).commafy(); 
} 

你可以做的是替換所有的逗號,然後使用這個代碼在逗號自己添加。

希望有所幫助。

+0

一種很長的驗證方法,但是,爲什麼*不*繼續並修復它?你只是驗證格式,而不是內容。 +1爲思考開箱即用。 – 2009-08-21 08:49:51

0

Here’s a pattern回答你的問題。在那裏還有許多其他與數字相關的模式,包括可維護的模式 - 這似乎從來沒有人擔心過。

相關問題