先ほどお聞きしたときとほぼ同じプログラムなのですが、
function printf(format){ for(var i = 0, len = arguments.length; i < len; i++){ // var pattern = new RegExp('\{' + (i-1) + '\}', 'g'); var pattern = /\{(i-1)\}/g; format = format.replace(pattern, arguments[i]); } console.log(format); } printf('{0}と{1}です', 'aaa', 'bbb');
上記のプログラムはエラーにはなりませんが、結果が{0}と{1}です
と表示されて正規表現にマッチしていないようです。
コメントアウトされているvar pattern = new RegExp('\{' + (i-1) + '\}', 'g');
を有効にすれば、正規表現にマッチして正常に表示されます(結果:aaaとbbbです
)。
正規表現リテラルで正規表現を定義して、printf関数が正規表現にマッチするようにしたいのですが、var pattern = /\{(i-1)\}/g;
ではどうしてマッチしないのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/24 00:03