摘要:[JavaScript] 千分位
function wl(s){document.write(s+"<br>");}
var normalNum='12345678987654321';
var kukuNum='134123142133894329AAA8539807831278187938';
function format1(num){
num = num.toString();
var re=/(-?\d+)(\d{3})/;
while(re.test(num)){
num=num.replace(re,"$1,$2");
}
return num;
}
wl('function');
wl(format1(normalNum));
wl(format1(kukuNum));
var re1 =/(\d{1,3})(?=(\d{3})+[^\d])/g;
//(\d{1,3}) 如果 1~3個數字後面跟著..(?=(\d{3})+[^\d]) 1組以上的(3個數字),一直抓到非數字結尾..就抓出來
wl('re1='+re1);
wl(normalNum.replace(re1,"$1,"));//數字結尾就炸了。
wl(kukuNum.replace(re1,"$1,"));
var re2=/(\d{1,3})(?=(\d{3})+(?:$|\.))/g;
wl('re2='+re2);
wl(normalNum.replace(re2,"$1,"));
wl(kukuNum.replace(re2,"$1,"));

var re3=/(\d{1,3})(?=(\d{3})+(?:$|[^\d]))/g;
wl('re3='+re3);
wl(normalNum.replace(re3,"$1,"));
wl(kukuNum.replace(re3,"$1,"));| (?:x) | 比對 'x' 但不記憶此項比對結果。又稱為非截取括弧。比對出來的子字串無法從比對結果的陣列的元素 [1], ..., [n] 取回。 |
| x(?=y) | 比對 'x' 但只在 'x' 後面接續著 'y' 的時候。舉例來說,/Jack(?=Sprat)/ 只在後面接續著 'Sprat' 的時候比對出 'Jack'。/Jack(?=Sprat|Frost)/ 只在後面接續著 'Sprat' 或 'Frost' 的時候比對出 'Jack'。然而,'Sprat' 或 'Frost' 都不是比對結果的一部分。 |
| x(?!y) | 比對 'x' 但只在 'x' 後面沒有接續著 'y' 的時候。舉例來說,/\d+(?!\.)/ 只在後面沒有接續著小數點的時候比對出數字。正規表達式 /\d+(?!\.)/.exec("3.141") 比對出 '141' 而非 '3.141'。 |
function format1(num)
while(re.test(num))