Javascript 从字符串中提取图像src

Javascript 从字符串中提取图像src,javascript,regex,node.js,Javascript,Regex,Node.js,我试图将所有图像元素匹配为字符串 这是我的正则表达式: html.match(/<img[^>]+src="http([^">]+)/g); html.match(/]+)/g); 这是可行的,但我想提取所有图像的src。因此,当我在这个字符串上执行正则表达式时: 它返回: ”http://static2.ccn.com/ccs/2013/02/img_example.jpg“您可以使用组访问src值

我试图将所有图像元素匹配为字符串

这是我的正则表达式:

html.match(/<img[^>]+src="http([^">]+)/g);
html.match(/]+)/g);
这是可行的,但我想提取所有图像的
src
。因此,当我在这个字符串上执行正则表达式时:

它返回:


”http://static2.ccn.com/ccs/2013/02/img_example.jpg“

您可以使用组访问
src

                                                   |->captured in group 1
                                   ----------------------------------                
var yourRegex=/<img[^>]+src\s*=\s*"(http://static2.ccn.com/ccs[^">]+)/g;
var match = yourRegex.exec(yourString);
alert(match[1]);//src value
|->在组1中捕获
----------------------------------                
var yourRegex=/]+)/g;
var match=yourRegex.exec(yourString);
警报(匹配[1])//src值

也许这就是您要寻找的:

我所做的是稍微修改您的正则表达式,然后使用
exec
函数获得匹配字符串的数组。如果您有超过1个匹配项,则其他匹配项将显示在
结果[2]
结果[3]

var html = '<img src="http://static2.ccn.com/ccs/2013/02/CC_1935770_challenge_accepted_pack_x3_indivisible.jpg" />';

var re = /<img[^>]+src="http:\/\/([^">]+)/g
var results = re.exec(html);

var source = results[1];
alert(source);
var html='';
变量re=/]+)/g
var results=re.exec(html);
var来源=结果[1];
警报(来源);
var myRegex=/]+)”/g;
var检验='';
myRegex.exec(测试);

正如注释中提到的数学,还有其他更直接的方法可以从


但是,如果您有一些限制要求您使用正则表达式,那么提供的其他答案就可以了。

您需要使用捕获组
()
来提取URL,如果您希望全局匹配
g
,即在使用捕获组时,需要在循环中多次使用
exec
match
全局匹配时忽略捕获组)

比如说

var imageTags = document.getElementsByTagName("img"); // Returns array of <img> DOM nodes
var sources = [];
for (var i in imageTags) {
   var src = imageTags[i].src;
   sources.push(src);
}
var m,
URL=[],
str='\n',,
rex=//g;
while(m=rex.exec(str)){
push(m[1]);
}
日志(URL);
// [ "http://site.org/one.jpg", "http://site.org/two.jpg" ]

不要使用正则表达式来解析html。@Tomiramstein,当Javascript内置DOM时,为什么必须使用正则表达式呢?我使用的是node.js,所以我无法将其解析为htmltree@Tomirammstein看看这个:@tomiramstein你不认为首先将这个问题标记为
node.js
会有帮助吗?最后是s。否则,它不会拾取所有图像。/]+/g有时img标记在“src”attr之后可能有height或其他属性。因此正则表达式应该是rex=/]*\/>/g;似乎这个正则表达式不适用于所有img标记,但它适用于/]*\/([^“>]*?)“*?>/g;这个正则表达式不起作用,因为我们将整个html作为一个字符串,我想从中找出图像url。你能帮忙吗?谢谢你的回答。它帮助了我。我只想添加以下内容:
var src=myRegex.exec(test);log('SRC:'+SRC[1])这个正则表达式不起作用,因为我们将整个html作为一个字符串,我想从中找出图像url。你能帮忙吗?
var imageTags = document.getElementsByTagName("img"); // Returns array of <img> DOM nodes
var sources = [];
for (var i in imageTags) {
   var src = imageTags[i].src;
   sources.push(src);
}
var m,
    urls = [], 
    str = '<img src="http://site.org/one.jpg />\n <img src="http://site.org/two.jpg />',
    rex = /<img[^>]+src="?([^"\s]+)"?\s*\/>/g;

while ( m = rex.exec( str ) ) {
    urls.push( m[1] );
}

console.log( urls ); 
// [ "http://site.org/one.jpg", "http://site.org/two.jpg" ]