2012-05-12 93 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的例子。