先読みを導入 (= ...?) と後読み(<= ...?)
人々を容易にするために整数がサポートES2018環境で使用することができそうだとすれば、長い記事を見たいと思っていません。
文字列(12345678).replace(/(?<= \ D)(?=(\ D {3})+ \ B)/ G '')// "12345678"
最も重要なの一つは、確かに先読み(?= ...)としても知られているゼロ幅の正の先読みアサーション。
桁区切りにのみ右から左へとカンマを追加する3デジタル中間の必要性の複数の前の数字という不具合スポット追加
と正のマッチが左から右にあるを、あなたは順序を使用する必要があり、この時間は確かに見て回ります。
周りを見ると取ることはありません位置の要件を満たすように一致させることができる文字は
、そのような`/ Javaの、として、(?=スクリプト ` /) のみJavaスクリプトの文字の後ろにそこにマッチします
「JavaまたはJavaScript'.replace(/ジャワ(=スクリプト)/、? '種類'); // 「Javaや活字体」
私たちは、三つの連続マッチング方法がデジタルであることを知っている/ \ D {3} /桁数が3の倍数である/(\ dは{3})
+ / 我々は背後に一致することができるようになります、確かに周りを見組換え配列3ビットの複数の位置の前に/(?=(\ D {
3})+)を/ 私たちは、次のような問題は、「戦いの半分であるだろう123456」は、6ビット、上記セパレータを追加する必要がありません。
我々はまた、肯定後読みが必要です場所、目の前に番号と一致する必要があるので、(?<= \ D / /を
) 、後方参照と先読み反対を指定された位置モードなどの背後にあります:
「Javascript'.replaceを用いて添え字を追加する(/(<=のJava)スクリプト/、? 'スクリプト')。// 「JavaScriptを使用して添字の追加」
2一緒に上記デジタルフロントにマッチし、3の倍数の背中の位置が、あなたはこのように書いた場合することができます。
文字列(12345678).replace(/(<= \ D)(=(\ D {3})+)/ G ''?)。// "1,2,3,4,5,678"
検索と異なるの期待は、各番号の右側の前で最後の3桁は、カンマを追加しました。
私たちは、この問題を解決するには、\ 'B'を単語の区切り文字を使用することができます
文字列(12345678).replace(/(?<= \ D)(?=(\ D {3})+ \ B)/ G '')// "12345678"
あなたはそれをここにES2018をサポートするために、その環境で実行されているが、多くのブラウザがある場合は後読みをサポートしていません。幸いなことに、私たちは少し柔軟であることができ、解決するために後読みを使用していません
文字列(12345678).replace(/(\ D {1,3})(?=(\ D {3})+ \ B)/ G '$ 1')// "12345678"
利便性のためには、機能を追加することができます
機能のFormatNumber(数){ 場合(typeof演算数== '数'!{) スロー 新しいエラーを( 'のFormatNumberパラメータが数値でなければなりません' ); } であれば(Number.isNaN(番号)){ リターン '0' 。 } 結果を聞かせて、 CONST [integerNum、decimalNum] =文字列(数字).split( '' ); リターン integerNum.replace(/(\ D)(=(\ D {3})+ \ B)/ G '$ 1'?)+(decimalNum `$ {decimalNum}`: '' )。 }
あなたは4に3を変更するには、国内の習慣、1万による除算を使用したい場合