0

入力 URL:http://somewpsite.com/wp-content/uploads/2012/10/IMG_1234-150x150.jpg 予期される出力 URL:http://somewpsite.com/wp-content/uploads/2012/10/IMG_1234.jpg 現在の正規表現:$(this).attr('src').replace('/-[\d]+x[\d]+/', '');

$(this)要素を表すと仮定しimgます。置換文字列と同じくらい簡単に使用できることはわかって-150x150いますが、さまざまなサイズがあり、このコードに戻って編集しなくても、さらに多くのサイズをサポートできるはずです。

ここの誰かが、上記の現在の正規表現の何が問題なのかを理解できることを願っています。

4

2 に答える 2

4

間違っているのは、JavaScript の正規表現は文字列ではないため、引用符で囲まないことです。

を囲む括弧は必要ないことに注意してください\d

$(this).prop('src', function (i, v) {
    return v.replace(/-\d+x\d+\.jpg$/, '.jpg');
});

他の画像形式も使用している可能性がある場合は、代わりにこれを使用してください。

$(this).prop('src', function (i, v) {
    return v.replace(/-\d+x\d+\.(jpg|png|gif)$/, '.$1');
});
于 2012-11-14T19:12:23.953 に答える
2

正規表現は JavaScript の特定のリテラルであり、文字列として作成されません。一重引用符を削除するだけです。

$(this).attr('src').replace(/-[\d]+x[\d]+/, '')

replaceその場では機能しませんが、代わりに結果の文字列を返すことに注意してください。したがって、それをさらに処理するか、単に属性に書き戻すかによって、これを何かに割り当てる必要があります。

于 2012-11-14T19:12:36.090 に答える