2012-05-12 145 views
0

對我來說至少是一個複雜的正則表達式。這是一個字符串我有:複雜的正則表達式

/wp-content/themes/modern2/timthumb.php?src=http://www.cnn.com/storyimages/4C59D569-7749-F32B.jpg&h=442&w=642&zc=1&s=2 

我想要做的是改變包含在該字符串的URL到我的選擇即另一個URL。

http://www.cnn.com/storyimages/4C59D569-7749-F32B.jpg 

TO

http://upload.wikimedia.org/wikipedia/commons/2/20/Google-Logo.svg 

我無法弄清楚如何正則表達式匹配/ SRC =和& h的替代數據=

感謝您的幫助!

回答

1

必須用正則表達式來完成嗎?

function replaceURL(sourceURL, newPart) { 
    var beforeSrc = sourceURL.split('?src=')[0]; 
    var afterH = sourceURL.split('&h=')[1]; 

    return beforeSrc + '?src=' + newPart + '&h=' + afterH; 
} 

然後,只需調用

replaceURL(
    '/wp-content/themes/modern2/timthumb.php?src=http://www.cnn.com/storyimages/4C59D569-7749-F32B.jpg&h=442&w=642&zc=1&s=2', 
    'http://upload.wikimedia.org/wikipedia/commons/2/20/Google-Logo.svg' 
); 

注意,這是有效的,因爲在有效的URL,該?src子不能出現任何比你期望它的地方越早,也不以後可以&h出現任何。

+0

呃,忘了把分隔符加回去,錯誤的情況在src ...已編輯,現在應該沒問題。一個人不能簡單地編寫睏倦的代碼,而不先測試:( – Imp

+0

謝謝!這工作完美 – Mark

2

它可能沒有必要使用正則表達式,但既然你問...

var str = '/wp-content/themes/modern2/timthumb.php?src=http://www.cnn.com/storyimages/4C59D569-7749-F32B.jpg&h=442&w=642&zc=1&s=2' 
var url = 'http://upload.wikimedia.org/wikipedia/commons/2/20/Google-Logo.svg' 
str = str.replace(/src=(.*?)&/, 'src=' + url +'&') 

輸出:

/wp-content/themes/modern2/timthumb.php?src=http://upload.wikimedia.org/wikipedia/commons/2/20/Google-Logo.svg&h=442&w=642&zc=1&s=2 
0

你想用正規表示法是這樣的:

src=([^&$]+) 

這裏有regexpcode的例子。