Javascript 如果url(..)不包含数据URI— ;正则表达式

Javascript 如果url(..)不包含数据URI— ;正则表达式,javascript,css,regex,Javascript,Css,Regex,我的问题是关于CSS中的url(…) 我有类似于url('blah-blah.jpg')的字符串。因此,我尝试从中获取URI值,并使用以下正则表达式正确地(在JavaScript中)获取该值: /url\(\s*['"]?(.*?)['"]?\s*\)/g; 但是如果url包含数据URI,我就不想得到它。我应该如何修改我的正则表达式?我想我应该添加一些类似于负前瞻部分的内容,但我不能正确地完成它 不匹配的示例: url(data:image/gif;base64,R...) url("data

我的问题是关于CSS中的
url(…)

我有类似于
url('blah-blah.jpg')
的字符串。因此,我尝试从中获取URI值,并使用以下正则表达式正确地(在JavaScript中)获取该值:

/url\(\s*['"]?(.*?)['"]?\s*\)/g;
但是如果
url
包含数据URI,我就不想得到它。我应该如何修改我的正则表达式?我想我应该添加一些类似于负前瞻部分的内容,但我不能正确地完成它

不匹配的示例:

url(data:image/gif;base64,R...)
url("data:image/png;base64,Ga..")
匹配示例:

url(http://stackoverflow.com/favicon.ico)
url("http://wikipedia.org/jimmy.png")

注意:我想得到确切的正则表达式解决方案。我知道在JS中我可以使用其他工具来解决这个问题,但我需要一个正则表达式。谢谢

这应该可以做到:

url\(\s*['"]?(?!['"]?data:)(.*?)['"]?\s*\)

这应该可以做到:

url\(\s*['"]?(?!['"]?data:)(.*?)['"]?\s*\)

试着在你的正则表达式中间使用这个否定的前瞻:

((?!['"]?data:).*?)
例子:
var reg=/url\(\s*['”]?((?!['”]?数据:).*?['”]?\s*\)/g;
//匹配项:
console.log('url(http://stackoverflow.com/favicon.ico)"匹配(reg);;
console.log('url('http://wikipedia.org/jimmy.png匹配(reg));
//无与伦比的:
log('url(数据:image/gif;base64,R…)。匹配(reg));

控制台。日志(URL(数据:图像/GIF;Base64,R..…))匹配(Reg(ReG));< /代码>

尝试在你的正则表达式中间使用这个否定的前瞻:

((?!['"]?data:).*?)
例子:
var reg=/url\(\s*['”]?((?!['”]?数据:).*?['”]?\s*\)/g;
//匹配项:
console.log('url(http://stackoverflow.com/favicon.ico)"匹配(reg);;
console.log('url('http://wikipedia.org/jimmy.png匹配(reg));
//无与伦比的:
log('url(数据:image/gif;base64,R…)。匹配(reg));

log('url(“数据:image/gif;base64,R…”).match(reg))你不想匹配的示例是什么?@Marc我已经添加了示例。谢谢您不想匹配的示例是什么?@Marc我已经添加了示例。谢谢您有图片,但@dhinus的答案更正确。但也谢谢你@伊格拉达门科只是好奇,在什么方面它更正确呢?他的解决方案也适用于
url(“data:image/gif;base64,R…”)
i。E当
url
的值在引号中时。@IgorAdamenko很好,我会为将来的读者修复这个错误。你有图片,但是@dhinus的答案更正确。但也谢谢你@伊格拉达门科只是好奇,在什么方面它更正确呢?他的解决方案也适用于
url(“data:image/gif;base64,R…”)
i。E当
url
的值出现在引号中时。@IgorAdamenko很好的调用,我将为将来的读者修复这个错误。在“展望”中很好地捕捉到引号+1在“展望”中很好地抓住了引号+1.