對千位分隔符 replace(/\B(?=(\d{3})+$)/g, ',')的理解

'12345678'.replace(/\B(?=(\d{3})+$)/g, ',')  // '12,345,678'

理解上面的含義,首先需要了解正則是怎么匹配的叶骨,分步來看這個(gè)正則:

  1. (\d{3})+$
    從左往右以貪婪模式匹配以三個(gè)數(shù)字為一組(重復(fù)n>=1次)結(jié)尾的字符串匹层。例如:
'123'.match(/(\d{3})+$/g) // ['123']
'123456'.match(/(\d{3})+$/g) // ['123456']
'12345678'.match(/(\d{3})+$/g) // ['345678']

2.\B
mdn上是這樣解釋的:匹配一個(gè)非單詞邊界泽台。

'1'.match(/\B/g) // null
'12'.match(/\B/g) // ['']
'123'.match(/\B/g) // ['', '']
'12345678'.match(/\B/g) // ['', '', '', '', '', '', '']

測試工具地址:https://www.runoob.com/regexp/regexp-syntax.html

例子里正則使用了g赏胚,所以找到的是所有符合條件的访娶。'12'.match(/\B/g)匹配到的就是12之間的位置商虐。'123'.match(/\B/g)匹配到的就是12,23之間的位置觉阅。12345678依此類推找到了7個(gè)位置。

  1. ?=
    exp1(?=exp2):查找 exp2 前面的 exp1秘车。注意這里想找的是 exp1典勇。exp2只是一個(gè)限定條件。例如:
'12a34b5'.match(/\d(?=[a-z])/g)  // ['2', '4']

想找的是一個(gè)數(shù)字叮趴,這個(gè)數(shù)字的后面是一個(gè)英文字母割笙。滿足條件的只有2和4



現(xiàn)在綜合起來看:'12345678'.match(/\B(?=(\d{3})+$)/g)

  • 1.首先這個(gè)正則想匹配出所有的\B
'12345678'.match(/\B/g) // ['', '', '', '', '', '', '']
  • 2.然后匹配的 \B 后面需要滿足以三個(gè)數(shù)字為一組(重復(fù)n>=1次)結(jié)尾
'12345678'.match(/\B(?=(\d{3})+$)/g) // ['', '']

過程分析如下:
1和2之間的位置,把12345678分成了1和2345678眯亦。'2345678'總共是7個(gè)數(shù)字伤溉,不滿足第二個(gè)條件
2和3之間的位置,把12345678分成了12和345678妻率。'345678'總共是6個(gè)數(shù)字乱顾,滿足條件
3和4之間的位置,把12345678分成了123和45678宫静。'45678'總共是5個(gè)數(shù)字走净,不滿足第二個(gè)條件
4和5之間的位置券时,把12345678分成了1234和5678。'5678'總共是4個(gè)數(shù)字伏伯,不滿足第二個(gè)條件
5和6之間的位置橘洞,把12345678分成了12345和678。'678'總共是3個(gè)數(shù)字说搅,滿足條件
6和7之間的位置炸枣,把12345678分成了123456和78。'78'總共是2個(gè)數(shù)字弄唧,不滿足第二個(gè)條件
7和8之間的位置抛虏,把12345678分成了1234567和8。'8'總共是1個(gè)數(shù)字套才,不滿足第二個(gè)條件
所以符合條件的只有2和3迂猴、5和6這兩組中間的位置。
因此'12345678'.replace(/\B(?=(\d{3})+$)/g, ',')的結(jié)果是'12,345,678'背伴。

參考地址:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
https://www.runoob.com/regexp/regexp-syntax.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沸毁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子傻寂,更是在濱河造成了極大的恐慌息尺,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疾掰,死亡現(xiàn)場離奇詭異搂誉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)静檬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門炭懊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拂檩,你說我怎么就攤上這事侮腹。” “怎么了稻励?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵父阻,是天一觀的道長。 經(jīng)常有香客問我望抽,道長加矛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任煤篙,我火速辦了婚禮斟览,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舰蟆。我一直安慰自己趣惠,他們只是感情好狸棍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著味悄,像睡著了一般草戈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侍瑟,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天唐片,我揣著相機(jī)與錄音,去河邊找鬼涨颜。 笑死费韭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庭瑰。 我是一名探鬼主播星持,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弹灭!你這毒婦竟也來了督暂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤穷吮,失蹤者是張志新(化名)和其女友劉穎逻翁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捡鱼,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡八回,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驾诈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缠诅。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖翘鸭,靈堂內(nèi)的尸體忽然破棺而出滴铅,到底是詐尸還是另有隱情,我是刑警寧澤就乓,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站拱烁,受9級特大地震影響生蚁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜戏自,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一邦投、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧擅笔,春花似錦志衣、人聲如沸屯援。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狞洋。三九已至,卻和暖如春绿店,著一層夾襖步出監(jiān)牢的瞬間吉懊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工假勿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留借嗽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓转培,卻偏偏與公主長得像恶导,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子浸须,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容