2011-01-28 9 views
1

これをjavascriptで複製することはできますか?replicate preg replaceをjavascript

preg_replace('/(.gif|.jpg|.png)/', '_thumb$1', $f['logo']); 

EDIT - 私はこのコードのpeiceのために、この次のエラーを取得していないです、その中を除いて

終端されていない文字列リテラル

$('#feed').prepend('<div class="feed-item"><img src="'+html.logo.replace(/(.gif|.jpg|.png)/g, "_thumb$1")+'"/> <div class="content">'+html.content+'</div></div>').fadeIn('slow');

+3

複製すると、元のコードと同じエラーが発生しますか? –

+2

@マーク:私はちょうど言ったつもりでした...彼らについてはどうですか? –

+0

厳密に正しいようにするには、両方で '\ .jpe?g 'を使うべきです。短い 'jpg'はDOS時代の譲歩にすぎません。 – mario

答えて

0
somestringvar.replace(/(.gif|.jpg|.png)/, replacementValue) 
3

はい、 JavaScript、replaceは文字列のメソッドですが、それは(また、配列/オブジェクトの表記は少し異なります)少し再配置することになります。

f.logo.replace(/\.(gif|jpg|png)/, '_thumb.$1'); 

more info

+1

@nikic画像のファイル名にピリオドと拡張子が複数回含まれるのはいつですか? – sdleihssirhc

+0

@sdleihssirhc:まあ、あなたは明らかに正しいです。私はいつもその修飾語を忘れるという間違いを犯し、間違いではなくても間違いを見るようになりました...指摘のため+1。 – NikiC

+0

ファイル名に2つの拡張子が含まれることは完全に不可能ではありません。それは遅れている、はい。しかし、それは技術的に許可されており、HTTPコンテンツの折衝スキームは実際には冗長な 'img0011.pnga.en.png'を使用することができます。したがって、私は '$'アンカーを避けて、代わりに '\ b'を付け加えます。 – mario

6

あなたが複製しようとしているコードと問題のカップルがあります:

  • ファイル名の末尾になくても、 "extensions"と一致します。
  • 正規表現のドットは、ピリオドだけでなく、任意の文字に(ほぼ*)一致します。

代わりにこれを試してみてください:私はあなたが代わるしようとしている文字列は単一のファイル名が含まれていることを仮定してい

'abc.jpg'.replace(/\.(jpg|gif|png)$/, '_thumbs$&') 


PCRE_DOTALLのマニュアルを参照してください。

+1

外側のキャプチャグループをドロップして '$&'を使用した方が、より良いかもしれません。 +1 – NikiC

+0

@nikic:+1ニース、ありがとう!私は完全にJavascriptでそれを行うことができます忘れてしまった。 :) –