0

文字列を置き換えようとしています

var url = "www.fnord.com/foo/bar/btn_close_white.gif";

単語置換のための単純な単語はうまく機能します:

var newUrl = url.replace(/btn_close_white.gif/g,"btn_close_black.gif");

しかし、現在どの色が設定されているかわからないので、色の部分を無視してセグメント全体を置き換える正規表現が必要です。そのため、理論的には、btn_close_pink.gifまたはbtn_close_someOtherFancyColor.gifすべてがに置き換えられbtn_close_black.gifます。

私はこれを試しましたが、失敗し、理由がわかりません:

var newUrl = url.replace(/btn_close_*.gif/g,"btn_close_black.gif"); // this fails

私は何が間違っているのですか?

4

2 に答える 2

1

これを試して:

var url = "www.fnord.com/foo/bar/btn_close_white.gif";
var newUrl = url.replace(/btn_close_[\w\d]*\.gif/g,"btn_close_black.gif");

正規表現[\w\d]*は、任意の量の文字または数字を意味します。URL に任意の文字を許可する場合は、次のようにします。

var newUrl = url.replace(/btn_close_.*\.gif/g,"btn_close_black.gif");

編集:書き込み"/btn_close_*\.gif/"正規表現の場合、これは、文字列に「btn_close」文字列 + 任意の量の「_」文字 + 「.gif」文字列が含まれている必要があることを意味します。

書き込み"/btn_close_.*\.gif/"正規表現の場合、これは、文字列に「btn_close」文字列 + 任意の文字数 + 「.gif」文字列が含まれている必要があることを意味します。

于 2012-10-15T13:23:53.207 に答える
0

文字列を単純に連結できるのに、かなり面倒な置換操作を使用する理由はありますか? そうでない場合は、次のことをお勧めします。

var url = "www.fnord.com/foo/bar/btn_close_white.gif";
var newUrl = url.substring(url.lastIndexOf('/')+1,-1)+"btn_close_black.gif"

最後のスラッシュを見つけて、後続のすべての文字を削除するだけなので、ファイル名を簡単に追加できます。

于 2012-10-15T13:35:03.930 に答える