JavaScriptの正規表現で変数?

2006年07月15日 | CGI/PHP
昨日の続きで、今日は技術的なお話。
JavaScriptの正規表現で変数使う時ってどうするんだろね・・・。
今回は、入力フォームの変数としてimage1,image2・・・にマッチする物を見つけたかったのね。それだけなら、

aaa.match(/^image([0-9]+)/)

でいいんだけど、画像(image)と拡大画像(limage)を共通処理にしたかったんで、この正規表現の「image」の部分を可変(変数)にしてマッチさせたいってわけ。Perlだったら、

$aaa =~ /^$image[0-9]+/

と変数「$image」とでもしてぶち込んじゃえばいいんで、非常にわかりやすいし便利。JavaScriptで同じことしようったって、変数に「$」がついてて区別出来るわけではないので、入れようがない。

調べてみたら、正規表現オブジェクトというのがあるらしい・・・

re = new RegExp("^" + vname + "[0-9]+$");

なんて作るんだそうな。「vname」は変数ね。これに「image」だの「limage」だの入れて渡してやればいい。んで、

aaa..match(re)

でマッチング。結果はこれでうまく行ってますが、こうするしかないんかな・・・まぁこうするものならそれで全然構わないんだけど。Perlの場合の単純さに比べるとなんかねぇって思うだけで・・・。「/・・・/」なんてPerl風の書き方してるだけに余計にね。