2016-04-15 6 views
0

Я пытаюсь заменить часть URL с другой строкой в ​​JavaScript, так, например, у меня есть следующие:Заменить часть URL с помощью Regex Javascript

res/icons/android/quickshop/icon-36-ldpi.png 
res/icons/android/quickshop/icon-48-mdpi.png 
res/icons/ios/quickshop/icon-72-hdpi.png 
res/icons/ios/quickshop/icon-96-xhdpi.png 

, и я хочу, чтобы заменить его на следующий (quickshop динамична и может быть любой набор символов, в основном [AZ] [AZ])

res/icons/android/homecenter/icon-36-ldpi.png 
res/icons/android/homecenter/icon-48-mdpi.png 
res/icons/ios/homecenter/icon-72-hdpi.png 
res/icons/ios/homecenter/icon-96-xhdpi.png 

Я всегда был очень паршиво, когда речь идет о регулярных выражений, кто может помочь?

+0

@Shafizadeh YUP одну строку в каждой строке, я думал, что я бы поставил 4 примера для иллюстрации –

+0

Ok, на каком языке вы используете? – Shafizadeh

+0

@Shafizadeh Javascript –

ответ

1

Попробуйте это:

var str = "res/icons/android/quickshop/icon-36-ldpi.png\nres/icons/android/quickshop/icon-48-mdpi.png\nres/icons/ios/quickshop/icon-72-hdpi.png\nres/icons/ios/quickshop/icon-96-xhdpi.png", 
 
    result = str.replace(/([\w.-]+)(\/[\w.-]+)$/gm,"homecenter$2"); 
 
console.log(result); 
 
alert(result);

2

Попробуйте это:

/(([\w]+\/){3})([^\/]+)(\/.+)/gm 

Regex101 Demo


var re = /(([\w]+\/){3})([^\/]+)(\/.+)/gm; 
var str = 'res/icons/android/quickshop/icon-36-ldpi.png'; 
var replaceWord = 'homecenter' 
var subst = '$1' + replaceWord + '$4'; 

var result = str.replace(re, subst); 
// show result 
window.alert(result); 

можно даже записать в виде функции:

function replaceURL(url, strReplace){ 
 
    let re = /(([\w]+\/){3})([^\/]+)(\/.+)/gm; 
 
    var subst = '$1' + strReplace + '$4'; 
 
    return url.replace(re, subst); 
 
} 
 

 
var originalURL = 'res/icons/android/quickshop/icon-36-ldpi.png'; 
 
var replaceWord = 'homepage'; 
 

 
var newURL = replaceURL(originalURL, replaceWord); 
 

 
document.write(newURL);

+0

У меня есть только replaceWord на jsFiddle https://jsfiddle.net/6v5zrb5y/ :( –

+0

использовал неправильные ссылки - см. Выше (изменено '\ 1' на' $ 1' и т. Д.) –

+0

Все эти URL-адреса являются одной строкой в ​​строке. – Shafizadeh

Смежные вопросы