在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  HTML/ JS用正則表達(dá)式給一個(gè)數(shù)字的整數(shù)部分每三位加一個(gè)千位符

JS用正則表達(dá)式給一個(gè)數(shù)字的整數(shù)部分每三位加一個(gè)千位符

今天參加了一個(gè)前端筆試,最后一道題是給出一長(zhǎng)數(shù)字,要你寫一個(gè)函數(shù)返回給數(shù)字加千分符的效果

eg:傳入1234567891.123,最后要輸出1,234,567,891.123,問(wèn)你如何實(shí)現(xiàn)。

我回來(lái)查了資料后發(fā)現(xiàn)可以用正則表達(dá)式的零寬斷言來(lái)做,寫是寫出來(lái)了,但是有倆問(wèn)題需要大佬回答,我把它們寫在代碼里了。

var thousandBitSeparator = function(numStr){
     var b = /(?<=\d)(\d{3})/g;     //1.斷言自身出現(xiàn)的位置的后面能匹配表達(dá)式exp,具體怎么匹配的???
     return numStr.replace(b, function($1){
          return ','+$1;
     });
}
alert(thousandBitSeparator('1234567891.123'));//1,234,567,891.123 這樣挺完美的
alert(thousandBitSeparator('12345678912.123'));//1,234,567,8912.123 2.這就不符合題意了,怎么改呢???
回答
編輯回答
單眼皮
https://github.com/anran758/F...

試試這個(gè)..


經(jīng)評(píng)論區(qū)小伙伴提醒..對(duì)小數(shù)點(diǎn)進(jìn)行了容錯(cuò),正則只取整數(shù)部分..

function numberWithCommas(n) {
  // 正則解釋: 匹配到 \B(非單詞邊界)后, 后面要匹配到 (\d{3})+(?!\d)
  // (\d{3})+ 至少匹配到一次或多次三個(gè)數(shù)字
  // (?!\d) 同時(shí)后面不是數(shù)字的話, 就匹配.

  // 注意, 后面的(?=)那一段代碼只是判斷的規(guī)則, 匹配到后只替換掉\B
  // 而\B 元字符匹配的是非單詞邊界

  let num = n.toString().split('.');
  num[0] = num[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  return num.join('.');
}

console.log(numberWithCommas(12345678912.1234))    // "12,345,678,912.1234"
2018年1月23日 22:47
編輯回答
萢萢糖
2018年8月13日 12:39
編輯回答
我甘愿

最簡(jiǎn)單的實(shí)現(xiàn):

const thousandBitSeparator = (x) => x. toLocaleString()
2018年2月3日 21:44
編輯回答
你的瞳
\B(?=(?:\d{3})+(?:\.\d+)?$)
2018年4月10日 02:50