正規表現について教えてください。

以下のスクリプトでは“
http://www.abc.com/X010102m.jpg”を分解し“http://www.abc.com/X010102l.jpg”を生成します。

これを“http://www.xyz.com/convert.cgi?src=http://www.abc.com/X010102m.jpg&w=67&h=&type=”を分解し、”http://www.abc.com/X010102l.jpg”を生成するには正規表現をどのように変更すればよいでしょうか?
お知恵をお借りできれば幸いです。

function changeImage(img){
var imgsrc = img.src || img;
imgsrc.match(/^(.*)m(\.[^\.]+)$/);
document.main.src = RegExp.$1 + "l" + RegExp.$2;
return false;
}

[現在]
http://www.abc.com/X010102m.jpg
 ↓
 RegExp.$1 → X010102
 RegExp.$2 → jpg
 ↓
http://www.abc.com/X010102l.jpg


[変更後]
http://www.xyz.com/convert.cgi?src=http://www.abc.com/X010102m.jpg&w=67&h=&type=
 ↓
 RegExp.$1 → X010102
 RegExp.$2 → jpg
 ↓
http://www.abc.com/X010102l.jpg

回答の条件
  • 1人10回まで
  • 登録:2007/09/28 01:33:40
  • 終了:2007/10/05 01:35:04

回答(2件)

id:GEN111 No.1

GEN111回答回数472ベストアンサー獲得回数582007/09/28 08:27:57

ポイント60pt

こういうのでどうでしょうか。

imgsrc.match(/src=(.*)m(.*?)(?=&)/) ;

あるいは

function changeImage(img){
  var imgsrc = img.src || img ;
  document.main.src = imgsrc.replace(/^.*?src=(.*)m(.*?)&.*$/, '$1l$2') ;
  return false ;
}

※「&」になっている部分は「&」にしてください。

id:icta

GEN111さんご回答ありがとうございます。

ただ残念ながらどちらもうまく機能しません。


もしかしたら正規表現以外に修正箇所があるかもしれませんのでコードの一部を載せました。

もし修正するとしたら下記のコードの/* サムネイル画像 */の部分と思われます。

何かお分かりになりましたらご指摘いただければ幸いです。

<script type="text/javascript">

<!--

location.search.match(/^\?img=([^&]+)(\.[^&\.]+)&num=(.+)$/);

var img = RegExp.$1;

var ext = RegExp.$2;

var num = Number(RegExp.$3);

function changeImage(img){

var imgsrc = img.src || img;

imgsrc.match(/^(.*)m(\.[^\.]+)$/);

document.main.src = RegExp.$1 + "l" + RegExp.$2;

return false;

}

document.write = img && ext && num ? document.write : function(){};

//-->

</script>

<table>

<tr>

<th>

<script type="text/javascript">

<!--

/* サムネイル画像 */

document.write('<a href="#"><img src="/convert.cgi?src=' + img + 'm' + ext + '&w=67&h=&type=" onclick="changeImage(this)"></a><br /><br />');

for (var i = 1; i < num; i++) {

document.write('<a href="#"><img src="/convert.cgi?src=' + img + String.fromCharCode(0x60 + i) + 'm' + ext + '&w=67&h=&type=" onclick="changeImage(this)"></a>');

}

//-->

</script>

</td>

<td>

<script type="text/javascript">

<!--

/* 拡大画像 */

document.write('<img src="' + img + 'l' + ext + '" />');

//-->

</script>

</td>

</tr></table>

2007/09/28 13:02:41
id:hayashi7 No.2

hayashi7回答回数95ベストアンサー獲得回数12007/09/29 21:33:32

ポイント10pt

文章になってない

  • id:GEN111
    あまりよくコードを読んでいませんが、
    document.main.src = RegExp.$1 + "l" + RegExp.$2;
    の前に
    window.location.href = RegExp.$1 + 'l' + RegExp.$2 ;
    を入れてみるなどして変換がうまく行っているか確かめてみてはどうでしょう。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません