我正在尝试将所有图像元素匹配为字符串,
这是我的正则表达式:
html.match(/<img[^>]+src="http([^">]+)/g);
Run Code Online (Sandbox Code Playgroud)
这有效,但我想提取src所有图像.所以当我在这个String上执行正则表达式时:
<img src="http://static2.ccn.com/ccs/2013/02/img_example.jpg />
它返回:
"http://static2.ccn.com/ccs/2013/02/img_example.jpg"
Mik*_*keM 22
您需要使用捕获组()来提取URL,如果您想要全局匹配g,即不止一次,在使用捕获组时,您需要exec在循环中使用(match在全局匹配时忽略捕获组).
例如
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" ]
Run Code Online (Sandbox Code Playgroud)
var myRegex = /<img[^>]+src="(http:\/\/[^">]+)"/g;
var test = '<img src="http://static2.ccn.com/ccs/2013/02/CC_1935770_challenge_accepted_pack_x3_indivisible.jpg" />';
myRegex.exec(test);
Run Code Online (Sandbox Code Playgroud)
正如 Mathletics 在评论中提到的那样,还有其他更直接的方法可以从您的标签中检索src属性,<img>例如通过 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);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您有一些限制迫使您使用正则表达式,那么提供的其他答案就可以正常工作。
| 归档时间: |
|
| 查看次数: |
33084 次 |
| 最近记录: |