Perlなどの置換系の正規表現ではeというオプション(フラグ)をつけると、置換後の文字列をプログラム・コードとみなしてくれるわけですが、JavaScriptのreplace()の第一引数で指定する正規表現にはeオプションなどというモノはありません。しかし、replace()の第二引数である置換後の文字列にはStringオブジェクトや文字列リテラル以外にも関数を指定することもできるので、事実上eオプション相当のことが実現できます。エミュレートというのは正確ではない気がするけど気にしない。 具体的には、 var s = "asdf123asdf123456asdf123asdf"; document.write( s.replace( /123/g, function (num, idx, old) { return parseInt(num) + 333; } ) ); という感じ。上記例で
![正規表現のeオプションをJavaScriptでエミュレート](https://cdn-ak-scissors.b.st-hatena.com/image/square/f2fda417d491d805f79065104db5f50e11015215/height=288;version=1;width=512/https%3A%2F%2Fhail2u.net%2Fapple-touch-icon-precomposed.png)