17

このサイトにたどり着くまで、数字にコンマを入れることができるショートコードを探していました。

コード:

function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}  

本当に素晴らしい作品。この例の数のセットを持つ:

addCommas('83475934.89');  

が返さ"83,475,934.89"れますが、コードを読むと返されると思います8,3,4,7,5,934.89が、このサイトはそれを説明しています

\d+と組み合わせると\d{3}、任意の数の数字が前に付いた 3 つの数字のグループに一致します。これにより、検索がだまされて右から左に置換されます。

そして、私はとても混乱します。このコードは右から左にどのように読み取られますか? さらに、$1and と$2はどういう意味ですか?

4

6 に答える 6

3

この説明は同じページのさらに下にありました

コードの説明: 小数点がある場合、コードは文字列を 2 つの部分 ( nStrnStrEnd ) に分割することから始まります。nStrで正規表現を使用してコンマを追加します。次に、nStrEndが追加されます。文字列のnStrEndが一時的に削除されていない場合、正規表現は 10.0004 を 10.0,004 としてフォーマットます

正規表現 説明: \d+と\d{3}の組み合わせは、任意の数の数字が前に付いた 3 つの数字のグループに一致します。これにより、検索がだまされて右から左に置換されます。

$1とは$2、正規表現からキャプチャされたグループ マッチです。このトピックの詳細については、Regex チュートリアルを参照してください。

于 2013-05-30T12:13:10.913 に答える