Javascript - 查找字符串中括号的所有出现并根据内容替换内容

时间:2015-07-08 11:10:49

标签: javascript html regex replace find

我想在字符串中搜索url()的所有匹配项,并根据内容替换内容。

例如,有这些不同的网址内容:

url("assets/images/pic.jpg")
url('assets/images/pic.jpg')
url("../images/pic.jpg")
url(../images/pic.jpg)
url('../images/pic.jpg')
url('http://website.com/images/pic.jpg')

和一个应该插在前面的链接 网址,取决于内容:

link = "file://dir/first/"

如果网址前面有../,则应将其删除 和链接应该在它前面。

如果前面有http://,则应删除所有http-link, 除了最后的fil和链接应该插在前面:

因此,以下链接应转换为:

url('http://website.com/images/pic.jpg')
url("file://dir/first/pic.jpg")

问题是,有时链接介于"'或无。

我只知道如何替换../-things

response=response.replace(/url\(\'\.\.\//g, "url('"+link);
response=response.replace(/url\(\"\.\.\//g, 'url("'+link);
response=response.replace(/url\(\.\.\//g, "url("+link);

有人知道解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想触及前两个陈述,可以试试这个。

string.replace(/(url\(['"]?)(?:\.\.\/|http:\/\/[^)]*\/)?/g, "$1" + link);

如果您不想触摸前两个,请删除最后一个存在的可选量词?

string.replace(/(url\(['"]?)(?:\.\.\/|http:\/\/[^)]*\/)/g, "$1" + link);

DEMO