2012-03-22 9 views
1

a.jpgとb.jpgで終わる画像をc.jpgに置き換えます。次のようにJqueryは正規表現を使用して置き換えます

私のコードは次のとおりです。

$(".test").each(function() {    
    var src = $(this).attr("src"){ 
    if(src.match(/a.jpg$/)){ 
     src.replace("a.jpg", "c.jpg"); 
    } else if (src.match(/b.jpg$/)){ 
     src.replace("b.jpg", "c.jpg"); 
    } 
    $(this).attr("src", src);  
}); 

をそれは私が正規表現を使用してこれを行うことができますどのように...複雑ですか?

答えて

6

あなたはパターンが一致した場合にだけ行う、チェックする必要はありません置き換える:

you'rは唯一のsrc属性の終わりを置き換え、そして拡張子が含まれているため
$(".test").each(function() { 
    $(this).attr("src", $(this).attr('src').replace(/[ab]\.jpg$/, "c.jpg"); 
}); 
1

、それは言うことは安全です(a | b).jpg部分文字列は1つだけ出現します。 つまり、$(this).attr('src').replace('a.jpg','c.jpg').replace('b.jpg','c.jpg')は、Tatuの答えとまったく同じように、正規表現を使用しません。

文字列を操作するときは、デフォルトで正規表現に変更しないで、2回考えてください。おそらく、正規表現に関連するSOの質問の85%は、正規表現がない(そしてほとんどの場合、より良い)解決策が可能な場合です。

+0

いいえ、それはありません。例えば 'a.jpg.fail.gif'。 – Qtax

+0

本当の簡単な修正: '$(this).attr( 'src')。substr(0、$(this).attr( 'src')。length-5)+ $(this).attr( 'src' ).substr(-5).replace(... 'など) コンソール' substr(0、test.length-5)+ test.substr(-5).replace( 'a.jpg'、 'c。 jpg ')。replace(' b.jpg '、' c.jpg ') 'は期待通りに動作します –

関連する問題