Javascript匹配从URL中删除部分文件名 - 替换最后一次出现

时间:2012-08-30 01:05:38

标签: javascript string replace

我有这个图片网址:http://files.myweb.com/12/06/002_xz808/normal_paris_01.jpg

我需要这个http://files.myweb.com/12/06/002_xz808/paris_01.jpg

我无法在"normal_"上使用简单的替换功能,因为此关键字可能会偶然出现在其路径中的文件名之前。我需要将它用于最后"normal_",但我不知道如何。请帮忙。

3 个答案:

答案 0 :(得分: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"));

先前正则表达式中的捕获组(括号中的部分)是贪婪的,然后是懒惰的。

贪婪的人(。*)想要在它停止捕捉之前尽可能地扩展。

懒惰的人(。*?)想要在满足捕获要求的同时尽快退出。

替换字符串中的后向引用告诉它将它在第一个和第二个捕获组中找到的内容直接连接在一起,跳过未捕获的法线_

答案 1 :(得分: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"

答案 2 :(得分: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_”(后面没有斜线)。