开发者

Matching urls without specific delimiters

开发者 https://www.devze.com 2023-02-12 13:03 出处:网络
I\'m trying to match all the URLs inside an arbitrary text, with no specific delimiters, and eventually with multiple items in the same line:

I'm trying to match all the URLs inside an arbitrary text, with no specific delimiters, and eventually with multiple items in the same line:

http://www.site.com/image1.jpg "http://www.site.com/image2.jpg"
'http://www.site.com/image1.jpg&a=1'

Please not the space after the fist URL, and the terminating &a=1

This is my actual regex: (https?:\/\/.*\.(?:png|jpg)), that matches correctly just the last URL, but the fist and second are matched as one result.

The expected result should be instead this:

http://www.site.com/ima开发者_如何学JAVAge1.jpg
http://www.site.com/image2.jpg
http://www.site.com/image1.jpg

Thanks.


if they are all ending with .jpg it's fairly easy to achieve with this regexp: /[a-zA-Z0-9:\/\.-]+\.jpg/. I've added few more url examples to test the match. The result is an array of matches.

var str = "http://www.site.com/image1.jpg \"http://www.site.com/image2.jpg\" 'http://www.site.com/image1.jpg&a=1' http://www.21d1dk1kk1.org/image.jpg http://www.21d1dk1-kk1.org/image.jpg";

var matches = str.match(/[a-zA-Z0-9:\/\.-]+\.jpg/g); 

if you need to match more then just jpg you can use (jpg|gif|png) etc. in place of the jpg (eg. [a-zA-Z0-9:\/\.-]+\.(jpg|gif|png)/g)

Having the array of matches you can output it whatever way you want by iterating it. But I assume you know how to deal with that.

0

精彩评论

暂无评论...
验证码 换一张
取 消