我试图制作一个正则表达式来寻找:background-image:url('URL'); URL是图像的外部链接。 一直在尝试这样的事情:
/\s*?[ \t\n]background-image:url('https?:\/\/(?:[a-z\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:jpe?g|gif|png)$');/i
但无法让它发挥作用。 我正在使用javascript / jquery
答案 0 :(得分:0)
这会得到你想要的吗?:
/\s*?[ \t\n]background-image:url\('.+?'\);/i
答案 1 :(得分:0)
我认为你可以简化它,如果你知道它只会随着中间的URL而改变。我可能过度使用\ escapes,但最好是安全而不是抱歉。
/background\-image\:url\(\'.*?\'\)\;/
答案 2 :(得分:-1)
这是否总是以双引号内联,因此您的网址始终是单引号?一些旧网站在CSS文件或标题CSS中使用双引号。
你想抓住整件事吗?或者您只是想提取生成的URL?
SirCapsAlot提出了一个很好的问题,您是否只是在寻找背景图片网址?因为他们也可以使用Background属性,甚至可以使用.backgroundImage="url(image.jpg)"
在JavaScript中设置。
你绝对只想要包含http(s)的那些?
由于您提出的要求有限,这是最好的正则表达式:
background-image\s*:\s*url\('(https?://[^']+)
如果您对我的问题有答案可能会改变您的要求,那么请在此处评论,以及我的答案。
故障:
background-image:\s*url //Find the literal text to begin
\(' //Find the literal opening parens and quote
( //Begin Capture Group 1
https?:// //Require the match of https:// (the s is optional because of the ?)
[^']+ //Require that everything until the next quote is matched
) //Capture the result into Group 1
一位同事指出,我可能因为没有捕捉到收盘价而被投票。注意:捕获结束标记将是一个浪费的步骤,并且这个正则表达式不是必需的。
他还指出,有人可能会因为在网址部分要求http或https而向我投降。但是用户的问题专门针对外部URL,而不是内部URL。所以这是一个有效的要求,让他更接近他的要求。
Sooo ...不确定为什么这会有一个downvote。