質問: input.replace(/\w{4,}/ig, '****'); console.log(output); ``` 参照 苦手なJavaScriptで大嫌いな正規表現を克服する為のまとめ
回答: `replace`している行を下記のように書き換えると目的を達成できるかと思います。 ``` //const output = input.replace(/---[\s\S]*?qiitaId: {\'\'} [\s\S]*?---/, '1hhss11') const output = input.replace(/(---[\s\S]*?qiitaId: )'{2}( [\s\S]*?---)/, '$11hhss11$2') ``` なお`\w{4,}`の意味は「任意の文字列が4文字以上連続している」の意味です。 これを`'{2}`に書き直すことで「'(クォーテーション)が2文字連続している」の意味に変えています。 `$1`と`$2`は正規表現にマッチする範囲のうち括弧でグループ化された範囲に置き換えられます。 そのため括弧で括る範囲に`'`を広げることで`$1`によりグループ化した内容に`'`も含められます。 試しに`$1`や`$2`を削除してみると理解しやすいかもしれません。 なおqiitaidが最初に使われている箇所について、qiitaId: ''のクォーテーション内部を書き換える正規表現は下記のように記述可能です。 ``` let output = input.replace(/(qiitaId: *')[^\']*/, '$11hhss11'); ```