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

Javascript - Find all occurences of brackets in a string and replace the content depending on it's content

我想搜索字符串中出现的所有 url() 并根据其内容替换内容。

例如有这些不同的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 应该放在 url,视内容而定:

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

如果url前面有../,应该去掉 link 应该在它前面。

如果前面有一个http://,那么http-link应该全部去掉, 除了最后的 fil 和 link 应该在前面插入:

所以下面的link应该转换为:

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

问题是,有时 link 介于 "' 之间或什么都没有。

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

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

有人知道解决方案吗?

谢谢!

如果你想接触前两个语句,你可以试试这个。

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

如果您不想触及前两个,请删除最后一个出现的可选量词 ?

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

DEMO