問題タブ [data-masking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
363 参照

javascript - JavaScriptで文字列置換と正規表現を同時に使用するときに、キャプチャされたグループの長さを取得する方法は?

プライベート データの一部をアスタリスク (*) に置き換えることにより、単純なデータ マスキング関数を実現しようとしています。JavaScript の文字列置換関数を使用します。

だから私がやったことは次のとおりです:

何とか期待どおりに動作しますが、少し改善したいと思います。たとえば、名前: "吴青峰" -> 名前: "吴*峰"、名前: "王张玉成" -> 名前: "王**成", tel: "15812346584" -> tel: "158****6584" など.

つまり、置換される部分に複数のアスタリスク( ) を追加し、アスタリスク( ) の数は、 String.replace() 中にキャプチャされたグループの長さと等しくする必要があります。

コメント行が示すように、私は '*'.repeat(RegExp.$2.length) のようなことを試しました。パズルは RegExp.$n が String.replace() 関数の終了後にのみ値を取得できることであり、これが誤位置につながります。 .

したがって、 String.replace() 関数中に同時にキャプチャされたグループの長さを取得する方法はありますか?