JS基於正則實現數字千分位用逗號分割

一、若是數字帶有小數點的話,能夠使用toLocaleString()方法實現這個需求javascript

var a = 8462948.24;
b.toLocaleString();
//8,462,948.24

二、不帶小數點咱們能夠簡單的寫個正則去實現java

有小數點咱們能夠用split()分割,獲得數組,裏面存儲這整數和小數部分,使用正則匹配實現整數加入逗號,最後拼接起來。可是不如直接使用上面方法,簡單粗暴。數組

num.toString().replace(/(\d)(?=(?:\d{3})+$)/g,'$1,')

      匹配規則: 將該num轉化爲字符串後,全局(/g)正向匹配,看是否符合斷言(?=(?:\d{3})+$)部分,直到匹配結束。即遇到 數字 + 該數字後面緊跟連續的三位數字(而且無論這連續的三位數字出現多少次),符合則在該數字(’$1’)後加入逗號,替換的時候忽略(?:)這連續的三位數.函數

封裝爲函數

  • 判讀是否帶有小數點,有則以情景1的方式實現。
  • 沒有小數點,就用正則匹配實
function numFormat(num) {
    var c = (num.toString().indexOf ('.') !== -1) ? num.toLocaleString() : 
             num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
    return c;
}
相關文章
相關標籤/搜索