5

私はそれを+ $としても見ました。

私は使っている

$(this).text( $(this).text().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,") );

10000 を 10,000 などに変換するには

私は他のすべてを理解していると思います:

  • (\d) - 番号を検索
  • (?=\d{3}) - 3 つの数字が続く場合
  • '+' - 最初の検索後に停止しない
  • (?!\d) - 最後の数字から始めますか?
  • /g - 文字列全体
  • ,"$1," - 数字を自分自身とカンマに置き換えます
4

2 に答える 2

7

私はあなたがそれを少し誤解していると思います:

  • (?=\d{3}) - 3 つの数字が続く場合

正規表現は実際には次のとおりであることに注意してください。

(?=(\d{3})+

つまり、開き括弧がありません。以下の全体。

(\d{3})+(?!\d)

これは(?= ... )ゼロ幅の先読みアサーションです。これは、これまでに一致させたものに従う必要があることを示す良い方法ですが、実際にはそれを消費しません。

(?!\d)\d(つまり数字)が続くべきではないと言っているので、合計で:

  • (\d)番号を見つけてキャプチャします。
  • (?=(\d{3})+(?!\d))3 桁の 1 つまたは複数のグループが続く必要があることをアサートしますが、それらすべての後にさらに別の桁が続くべきではありません。

に置き換え"$1,"ます。つまり、キャプチャされた最初の数字とコンマです。

その結果、3 桁の倍数が続く数字の後にコンマを配置します。これは、3 桁の区切り記号としてコンマを追加すると言う良い方法です!

于 2012-07-25T12:01:53.687 に答える
1

?!Negative lookaheadを意味し、何か他のものが続かないものに一致させるために使用されます。あなたの場合は数字です

于 2012-07-25T12:01:08.233 に答える