正则表达式替换文件名jQuery的一部分

时间:2015-06-07 14:03:16

标签: javascript jquery

我有一个遵循相同模式的字符串。我需要在此字符串中动态设置文件名的第一个数字。

示例:

var newNumber = '123';

更改此

var str = '/folder1/folder2/folder3/567-7-P.jpg'

到此

var newStr = '/folder1/folder2/folder3/123-7-P.jpg'

我已经编写了一些简单的jQuery行来分解字符串,但不太确定如何使用新值重新构建它。我更喜欢使用rgex做得更整洁,但我的正则表达能力有限。

当前状态http://jsfiddle.net/j2qLvqbw/

5 个答案:

答案 0 :(得分:0)

var string = '/folder1/folder2/folder3/567-7-P.jpg';
var newvalue = '123';
var result = string.substr(string.lastIndexOf('/') + 1);
var sections = result.split('-');
var replaceit = string.replace(sections[0], newvalue);
$('p').text(replaceit);

DEMO

您可以将其用作功能

function replcaeNum(imgurl , newvalue){
    var result = imgurl.substr(imgurl.lastIndexOf('/') + 1);
    var sections = result.split('-');
    var replaceit = imgurl.replace(sections[0], newvalue);
    $('p').text(replaceit);
}

并像那样使用

// replcaeNum(imgurl ,newvalue);
replcaeNum('/folder1/folder2/folder3/567-7-P.jpg','123');

DEMO

答案 1 :(得分:0)

如果两者都遵循相同的模式,则此正则表达式使用([^ /] + $)来确保您不匹配文件夹而不是文件:

var path = '/folder1/folder2/folder3/567-7-P.jpg';
var newPath = string.replace(/\/\d+([^\/]+)$/, "/123$1");

// result: '/folder1/folder2/folder3/123-7-P.jpg';

如果有一个具有相同模式的文件夹:

var path = '/folder1/folder2/987-abc/567-7-P.jpg';

正则表达式只会替换文件名:

// result: '/folder1/folder2/987-abc/123-7-P.jpg';

答案 2 :(得分:0)

以下查找并替换第一次出现的斜杠,后跟一组数字,后跟带有/123-'的短划线如果需要为不同的替换字符串进行参数化,只需动态构造替换字符串具有替换值。 http://jsfiddle.net/0bqwxf0p/

var path = '/folder1/folder2/folder3/567-7-P.jpg'

var newPath = path.replace(/\/\d+-/, '/123-');

答案 3 :(得分:0)

尝试使用.split().splice()



var newNumber = "123";
var str = "/folder1/folder2/folder3/567-7-P.jpg";
// `.split` "/"
var res = str.split("/");
// `.splice` last index within `res` , `.replace` first occurrence
// of digit followed by "-" with `newNumber`
res.splice(-1, 1, res.slice(-1)[0].replace(/\d+(?=-)/, newNumber));
var newStr = res.join("/");
document.write(newStr);




答案 4 :(得分:0)

以你的榜样为基础:

var string = '/folder1/folder2/folder3/567-7-P.jpg';

var path = string.substr(0, string.lastIndexOf('/') + 1);
var filename = string.substr(string.lastIndexOf('/') + 1);
var separator = filename.indexOf('-');
var suffix = filename.substr(separator, filename.length); // -7-P.jpg

$('p').text(path + '123' + suffix);

http://jsfiddle.net/j2qLvqbw/11/