function putComma(price) {
return price.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
}
這是一個工作片段,用於將逗號放在至少4位數字的數字上。「/ B(?=(?: d {3})+(?! d))/ g」如何在數字上添加逗號?
但是,這是如何 - >/\B(?=(?:\d{3})+(?!\d))/g
告訴一個數字是至少4位數?
function putComma(price) {
return price.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
}
這是一個工作片段,用於將逗號放在至少4位數字的數字上。「/ B(?=(?: d {3})+(?! d))/ g」如何在數字上添加逗號?
但是,這是如何 - >/\B(?=(?:\d{3})+(?!\d))/g
告訴一個數字是至少4位數?
和評論一樣,reading about regular expressions對你最有利(從長遠來看)。打破這個特定的正則表達式是這樣的:
\B
告訴它只有一個字邊界內看(這意味着它不能是其他類型的字的一部分 - 它不能是b123412b123
,但只接受它發現的東西,如果它是獨立的 - 123456
,a 123456 w
(?=
告訴它找到組中的任何東西(直到它到達匹配的右括號),並且只有在它作爲整體被發現時才返回,它是還要確保替換是以相反的方式完成的,因爲它看起來比字符串的末尾還要遠。?:
告訴它查找以下匹配,但不創建反向引用(正則表達式中的術語)\d{3}
在一行中查找3位數。+
然後標記3個數字(包裹在圓括號中以確保規則被視爲一個塊,例如 - (\d{3})+
)模式可以重複(3位數,6,9等)。(?!\d)
尋找另一個數字,但不包括它,確保數字是在3,而不是組後面的數字是不是在3所以基本上它看起來團體一個或多個3位數組,因此可以通過RegEx 而不是返回匹配的數字(因爲它們被?:
忽略),因此只返回不是無關的匹配部分 - 它返回\B
,這就是要替換的部分。如此有效,它僅從字符串的末尾開始替換3個完整的組,從而導致它將3333333
變成3,333,333
。
這是正則表達式,如果你真的關心這個問題,你應該去了解更多。 [這可能是一個好的開始](http://www.regular-expressions.info/) – musefan
如果你搜索正則表達式,並閱讀一些教程,你應該能夠在幾個小時內最! – adeneo
感謝您的建議,但並非所有人都有足夠的空閒時間閱讀教程。 –