I’m trying to match all the images elements as strings,
This is my regex:
html.match(/<img[^>]+src="http([^">]+)/g);
This works, but I want to extract the src of all the images. So when I execute the regular expression on this String:
<img src="http://static2.ccn.com/ccs/2013/02/img_example.jpg />
it returns:
"http://static2.ccn.com/ccs/2013/02/img_example.jpg"
Advertisement
Answer
You need to use a capture group () to extract the urls, and if you’re wanting to match globally g, i.e. more than once, when using capture groups, you need to use exec in a loop (match ignores capture groups when matching globally).
For example
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" ]