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几个答案:
https://stackoverflow.com/a/12393724/4203409
提前致谢。
答案 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);