下記のソースは、正規表現にマッチしたらプレイスホルダ{0}と{1}を第二引数以降の文字に入れ替えるソースで、javascript逆引きレシピ65pに載っていたものです。
javascript
1function sprintf(format) { 2 for(var i = 0, len = arguments.length;i < len; i++) { 3 var pattern = new RegExp('\\{' + (i-1) + '\\}','g'); 4 format = format.replace(pattern, arguments[i]); 5 } 6 return format; 7 8 9} 10 11console.log(sprintf('{0}を飼っています。名前は、{1}です。','ハムスター','ウタ'));
上記のソースに使われている正規表現についてなのですが、恐らく**{と}をエスケープ処理するためにエスケープ文字の*が使われているのですが、
何故か二つあります。***そのものを使いたいときは、もう一つ*をくっつけることでエスケープ処理が出来ます。しかし、第一引数を見る限り、
エスケープ処理した**を使う場面は、見当たりません。書籍には、RegExp
を使うときは、***を\でエスケープ処理することと書いてありました。
ということは、\は、正規表現リテラルでいう*なのでしょうか。
また、恐らくエスケープ処理された*{}内の+は、メタ文字の「一文字以上の繰り返し」を意味する+**なのでしょうか。
**{}内の数字の両隣りに「一文字以上の繰り返し」というメタ文字が必要なのでしょうか。
最後に、同じく{}**内にアポストロフィが二つありますが、これも何を意味して記述してあるのかが分かりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。