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" ]