在字符串中查找所有图像src url并存储在数组中

时间:2016-05-16 06:27:52

标签: javascript jquery

var rawString = '<a>This is sample</a><img src="example1.com" /></br><img src="example2.com" /><p>String ends.</p>'

var output = somefunction(rawString);
输出应该是:

  

输出= [&#34; example1.com&#34;,&#34; example2.com&#34;];

我在这里找不到任何解决方案。我尝试使用少量正则表达式,但无法正常工作。

这里有stackoverflow几个答案:

seekTo

https://stackoverflow.com/a/12393724/4203409

提前致谢。

3 个答案:

答案 0 :(得分:4)

您可以使用jQuery().filter().map().get()

var output = $(rawString).filter("img").map(function() {return this.src}).get();

答案 1 :(得分:2)

使用Javascript和regex:

function getAttrFromString(str, node, attr) {
    var regex = new RegExp('<' + node + ' .*?' + attr + '="(.*?)"', "gi"), result, res = [];
    while ((result = regex.exec(str))) {
        res.push(result[1]);
    }
    return res;
}

使用示例:

var rawString = '<a>This is sample</a><img src="example1.com" /></br><img src="example2.com" /><p>String ends.</p>';
getAttrFromString(rawString, 'img', 'src');

返回:

["example1.com", "example2.com"]

这是您的jsfiddle

答案 2 :(得分:0)

.Filter使用此示例

var rawString = '<a>This is sample</a><img src="example1.com" /></br><img src="example2.com" /><p>String ends.</p>';
var  indices = new Array();
        var result = $(rawString).filter('img').map(function() {
            indices.push(this.src);
        });
        console.log(indices);

.find将使用此示例

var rawString = "<style></style><div><div><div class=''><div class=''><div style='position:relative'><div id='' class='sideCross'>X</div> <div class=\"vertical-text\">Live Chat</div><img src=\"http://localhost/rcm/dashboard\" alt=\"text\"/><div class=\"speech-bubble\"><img src=\".com\" alt=\"text\"/></div></div></div></div></div> </div>";
        var  indices = new Array();
        var result = $(rawString).find('img').map(function() {
            indices.push(this.src);
        });
        console.log(indices);