javascript从字符串中提取src

javascript从字符串中提取src,javascript,Javascript,如何通过模式匹配从该字符串中提取图像src var str = "<img src=\"http://l.yimg.com/a/i/us/we/52/20.gif\"/><br />\n<b> Current Conditions:</b><br />\nFog, 16 C<BR />\n<BR /><b>"; ?必须通过模式匹配吗? 使用jquery: var src = $('img')

如何通过模式匹配从该字符串中提取图像src

var str = "<img src=\"http://l.yimg.com/a/i/us/we/52/20.gif\"/><br />\n<b>
    Current Conditions:</b><br />\nFog, 16 C<BR />\n<BR /><b>";

必须通过模式匹配吗? 使用jquery:

var src = $('img').attr('src');

你应该考虑使用jQuery来实现这一点。如果你有一个字符串上的html,那么就这样做

$('<div>' + myHtml + '</div>').find('img').attr('src');

使用纯js获取dom。

因为您使用的是JavaScript,所以可以随时使用dom解析器。使用它

var tmp = document.createElement('div');
tmp.innerHTML = str;
var img = tmp.getElementsByTagName('img')[0];
var src = img.src;

已完成^ ^

使用正则表达式的工作示例:

<script>
    var str = "<img src=\"http://l.yimg.com/a/i/us/we/52/20.gif\"/><br />\n<b>";
    var regex = /(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/
    var url = str.match(regex)[0];
    alert(url);
</script>

使用此处的正则表达式字符串:

您想要url的哪一部分?为什么不使用jQuery?@StefanKoenen为什么使用jQuery?!这些反斜杠是否存在于实际字符串中?你从哪里得到这个字符串?这是一个字符串,不是图像标签!因为,当然,你不可能用普通的JavaScript实现这一点。通常每个网站都已经加载了jquery,所以你可以使用更干净、更强大的语法。当然,你也可以在本地完成。每个网站都可以吗?嗯……不。jQuery没有给你一个更干净的语法,因为它仍然只是使用Javascript语法的Javascript。每个网站都已经加载了jQuery,只有当开发者决定…我的网站不会用一根50英尺长的杆子碰jQuery。这样,当我的代码崩溃时,我不能将其归咎于jQuery。有人尝试提交带有jQuery验证的表单吗?没有标记,没有jQuery答案。明白了吗?不管有没有库的帮助,问题是从字符串中提取src,而不是从DOM中的元素中提取。jQuery或regex不够。@nnnnnn我知道,对吗?实际上,我喜欢并使用jQuery核心,我更喜欢实现自己的插件,这样我就可以控制它们的行为,但根据我的其他评论,我不会仅仅为了这个而将jQuery引入网站。我也喜欢正则表达式,但不要在html上使用它。最好使用DOMParser。innerHTML创建一个元素,并允许在输入字符串不可信的情况下执行任意代码。。。他来了。。。该中心无法坚持,因为他来的太晚了……我仍然认为仅仅因为是regex就否决一个可行的答案是不公平的。拒绝投票就足够了……对于这个问题,正则表达式不是太复杂了吗?OP想要src中的任何内容,所以不需要特别匹配URL:只需匹配任何非引号字符到结束引号。当然,这是一个核弹炮。您还可以使用简单的匹配方法:/src=\.\/这会给出两个返回。首先包含src标记,第二个是原始url。
<script>
    var str = "<img src=\"http://l.yimg.com/a/i/us/we/52/20.gif\"/><br />\n<b>";
    var regex = /(http|ftp|https):\/\/([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/
    var url = str.match(regex)[0];
    alert(url);
</script>