2011-02-18 30 views
0

我想所有的URL匹配任意文本里面,有没有具体的分隔符,并最终在同一条线上的多个项目:后匹配的网址没有具体的分隔符

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

请不占空间第一个网址,并终止&a=1

这是我的实际正则表达式:(https?:\/\/.*\.(?:png|jpg)),只匹配最后一个URL,但第一个和第二个匹配为一个结果。

预期的结果应该不是这样的:

http://www.site.com/image1.jpg 
http://www.site.com/image2.jpg 
http://www.site.com/image1.jpg 

感谢。

回答

0

如果它们都以.jpg结尾,使用此正则表达式可以很容易地实现:/[a-zA-Z0-9:\/\.-]+\.jpg/。 我已经添加了更多的url示例来测试比赛。结果是一串匹配。

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); 

,如果你需要匹配,不只是JPG你可以使用(jpg|gif|png)等替代JPG的(如[a-zA-Z0-9:\/\.-]+\.(jpg|gif|png)/g

有,你可以将它输出要通过任何方式匹配的数组迭代它。但我认为你知道如何处理这个问题。

+0

谢谢,很好!这样修改了正则表达式:var items = ht.match(/ https?:\/\/[a-zA-Z0-9:\/\ .--] + \。(jpg | jpeg | png | gif)/gi);`匹配绝对URL,多种文件类型和不区分大小写。 – Omiod 2011-02-18 22:30:32