如何通过RegEx替换路径中的任意字符串?

时间:2013-08-28 05:59:57

标签: javascript regex replace

我正在尝试用另一个字符串替换字符串中的路径段。我有一种感觉,RegEx将是最好的方式,但不知道如何。我想用另一个字符串替换xxxxx:

resources/audio/xxxxx/someaudio.mp3

“resources / audio /”的根路径将始终保持不变,但我正在尝试替换音频文件的父文件夹。音频文件是任意的,可以更改。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

你可以试试这个:

var newFolder = "yyyy";
var r = "resources/audio/xxxxx/someaudio.mp3".replace(/(resources\/audio\/).*(\/.*)/g, '$1' + newFolder + '$2');
console.log(r);

看到它正常工作here

答案 1 :(得分:0)

对捕获组使用replace方法:

> 'resources/audio/xxxxx/someaudio.mp3'.replace(/\bxxxxx\/([^/]+)$/, 'yyyy/$1')
"resources/audio/yyyy/someaudio.mp3"
> 'resources/audio/xxxxx/anotheraudio.mp3'.replace(/\bxxxxx\/([^/]+)$/, 'yyyy/$1')
"resources/audio/yyyy/anotheraudio.mp3"

([^/]+)匹配文件名并作为组1捕获。此组1在替换字符串中被引用为$1


或者使用积极的前瞻:

> 'resources/audio/xxxxx/someaudio.mp3'.replace(/\bxxxxx(?=\/[^/]+$)/, 'yyyy')
"resources/audio/yyyy/someaudio.mp3"
> 'resources/audio/xxxxx/anotheraudio.mp3'.replace(/\bxxxxx(?=\/[^/]+$)/, 'yyyy')
"resources/audio/yyyy/anotheraudio.mp3"