金額的校驗,一般就是校驗是否是數字,多少位小數就行了!像題目的這種(1,234,567.45)格式,只是在頁面展示的時候,或者在用戶輸入的是否,格式化一下,讓用戶更方便的看清楚金額是多少,更好的一個體驗而已。實際上和後臺交互的時候,理論上傳過去還是1234567.45。不是1,234,567.45。數據庫存的也應該是1234567.45。
還有一個就是。萬一需求是需要按照金額排序呢,1,234,567.45這種格式後臺做不了排序的,前端這裏排序也是麻煩!要把逗號去掉再排序!
綜上所說
首先驗證金額是否合法的一個正則
οninput="value= this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''"
/^[1-9]{1}\d*(.\d{1,2})?$|^0.\d{1,2}$/
然後格式化輸出的函數
function formatText(str,size,delimiter){
var _str=str.toString();
var _size=size||3,_delimiter=delimiter||',';
var regText='\\B(?=(\\w{'+_size+'})+(?!\\w))';
var reg=new RegExp(regText,'g');
return _str.replace(reg,_delimiter);
}