匹配的网址没有特定的分隔符

时间:2011-02-18 21:31:21

标签: javascript regex

我正在尝试匹配任意文本中的所有网址,没有特定的分隔符,最终在同一行中包含多个项目:

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)),它恰好匹配最后一个网址,但第一个和第二个匹配为一个结果。

预期结果应改为:

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

感谢。

1 个答案:

答案 0 :(得分: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

拥有匹配数组,您可以通过迭代以任何方式输出它。但我想你知道如何处理它。