0

「7847258998」のような数字をJavaScriptで100のコンマ区切りで印刷したい。結果は次のようになります。

7,84,72,58,998

つまり、右から最初の 3 桁をグループ化する必要があります。残りの数字は2のチャンクにグループ化されています。私は次のことを試しました:

"7847258998".replace(/\B(?=(\d{3})+(\d{2})+(?!\d))/g, ",")

しかし、次のように返されます: 7,8,4,72,58998. 正しい表現は?

4

2 に答える 2

3

これを試して:

"7847258998".replace(/\B(?=(\d{2})*(\d{3})$)/g, ",");

先読みで文字列の末尾を一致させることで、常に正常なものを探します。それ以外の場合は、ほぼすべてが一致します。

入力の長さ 1 ~ 10 でテストされています。おそらく動作すると判断するには十分です。ただし、文字ごとに残りの文字列を解析する必要があるため、かなり非効率的な方法です。

しかし、あなた仕事をする正規表現を求めました=)

于 2012-10-07T13:55:54.547 に答える
0
function commafy(num)
{  
   num  =  num+"";  
   var  re=/(-?\d+)(\d{3})/  
   while(re.test(num))
   {  
     num=num.replace(re,"$1,$2")  
   }  
   return  num;  
}
function  commafyback(num)
{  
   var x = num.split(',');
   return parseFloat(x.join(""));
} 
alert(commafy(7847258998))
于 2012-10-07T13:16:38.447 に答える