Javascript 正则表达式没有解析出我的图像url
我的代码似乎为我的图像url返回空值。我想得到的只是链接,但它似乎不工作 这是我的密码:Javascript 正则表达式没有解析出我的图像url,javascript,regex,Javascript,Regex,我的代码似乎为我的图像url返回空值。我想得到的只是链接,但它似乎不工作 这是我的密码: var image_url = jQuery('#bgImgWrap').css('background'), image; // Remove url() or in case of Chrome url("") image_url = image_url.match(/^url\("?(.+?)"?\)$/); 以下是在声明图像url后它立即返回的内容: Image: rgb(255, 255, 2
var image_url = jQuery('#bgImgWrap').css('background'), image;
// Remove url() or in case of Chrome url("")
image_url = image_url.match(/^url\("?(.+?)"?\)$/);
以下是在声明图像url后它立即返回的内容:
Image: rgb(255, 255, 255)
url(http://localhost:8000/mysite/images/Our_Services2.jpg)
no-repeat scroll 0% 0% / cover padding-box border-box
以下是使用我的正则表达式后返回的内容:
Image: null
我对正则表达式不是很在行,但我想知道是否有人能帮我获得我需要的正确背景图像url?谢谢大家! 正则表达式中的
^
和$
使其无法匹配。这些元字符分别告诉正则表达式引擎从开始到结束进行匹配。但您的url并没有锚定在开头或结尾。正确的正则表达式应该是
/url\([^)]+\)/
另请注意,.match
将返回匹配文本的数组。因此,您需要通过索引访问它们
image_url = image_url.match(/url\([^)]+\)/)[0];
我认为这个问题与正则表达式中的
^
和$
有关。你正在测试一个长的几行字符串,中间有你的查询,所以你可能想删除那些。
如果您确实希望确保结果在自己的行中,请在^
之后和$
之前添加\s*
,这样您就可以考虑一些空白。(\s
是空白,*
表示0-any)。您还需要在最后一个/
之后添加一个m
,以指定正则表达式应将这些字符计为“开始/结束行”,而不是“开始/结束字符串”
因此,我相信最终的正则表达式是:
/^\s*url\(("?(.+?)"?\)\s*$/m
一般来说,在编写正则表达式时,“activetester”工具往往会帮助我,在示例数据中不断突出显示正则表达式将匹配的内容。我使用的是Regexpal。com@MikeSamuel事实上,不,根据后面的?s,这似乎是可选的。@Katana314,说得好。