2
    Math.round(num1/num2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")

私はこれを持っています。

 var num1 = 123456789;
 var num2 = 10000; 

12,346 を取得しましたが、replace メソッドを使用した場合の動作がわかりません。replace() メソッドは何かを置き換えません。つまり、文字を削除する必要がありますか? しかし、なぜこの関数は文字間にコンマを挿入できるのでしょうか? 正規表現は 1 つずつ理解できますが、全体としてどのように機能するかはわかりません。ありがとう!

4

2 に答える 2

2

正規表現は、2 つのゼロ幅アサーションで構成されます。は単語境界ではない\B任意の位置に一致し、 はその後に続く任意の位置に一致します。したがって、正規表現は空の (長さがゼロの) 部分文字列と一致します。その部分文字列を「削除」しても効果がないため、「置換」すると、置換文字列を挿入するだけの効果があります。(?=(\d{3})+(?!\d))(\d{3})+(?!\d)

于 2013-09-12T02:21:05.793 に答える
0

パターンは次のように置き換えることができることに注意してください。

var num = '12345678';
var res = num.replace(/\B(?=(\d{3})+$)/g, ',');
// res -> 12,345,678
于 2013-09-12T02:24:16.993 に答える