1

私はこの画像のURLを持っています:http://files.myweb.com/12/06/002_xz808/normal_paris_01.jpg

これを入手する必要がありますhttp://files.myweb.com/12/06/002_xz808/paris_01.jpg

"normal_"このキーワードがパスのfilenameの前に誤って表示される可能性があるため、単純な置換関数をオンに使用することはできません。THE LASTに使う必要がありますが、どうすればいいの"normal_"かわかりません。助けてください。

4

3 に答える 3

2

お役に立てれば:

function replNormal(normal) {
    return normal.replace(/^(.*)normal\_(.*?)$/, '$1$2');
}
console.log(replNormal("http://files.myweb.com/12/06/normal_002_xz808/normal_paris_01.jpg"));

以前の正規表現のキャプチャグループ(括弧内の部分)は貪欲で、その後怠惰です。

貪欲な人(。*)は、キャプチャを停止する前に、可能な限り拡張したいと考えています。

怠惰な人(。*?)は、キャプチャ要件を満たすとすぐに終了したいと考えています。

置換文字列の後方参照は、キャプチャされていないnormal_をスキップして、最初と2番目のキャプチャグループで見つかったものを直接連結するように指示します。

于 2012-08-30T01:16:57.270 に答える
1

これを行うには多くの方法があります。最初に頭に浮かぶのは、でURLを分割/し、最後のコンポーネントで置換を行ってから、それを結合して戻すことです。

var url = 'http://files.myweb.com/12/06/002_xz808/normal_paris_01.jpg';
var parts = url.split('/');
// Remove the last part, everything following the last /
// and do the replacement
var img = parts.pop().replace("normal_", "");
// Stick the new string back onto the array
parts.push(img)
// And put all the / back in...
url = parts.join("/");

console.log(url);
// "http://files.myweb.com/12/06/002_xz808/paris_01.jpg"
于 2012-08-30T01:10:35.543 に答える
1

「/normal_」は、次のようにパスの最後のセグメントでのみ一致させることができます。

var url = "http://files.myweb.com/12/06/002_xz808/normal_paris_01.jpg";
url = url.replace(/\/normal_([^\/]+)$/, "\/$1");

作業デモ: http: //jsfiddle.net/jfriend00/rzj8u/

これは、URLの最後のセグメントの「normal_」のみを置き換えます(その後にスラッシュはありません)。

于 2012-08-30T01:16:49.620 に答える