我正在尝试匹配任意文本中的所有网址,没有特定的分隔符,最终在同一行中包含多个项目:
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
感谢。
答案 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
)
拥有匹配数组,您可以通过迭代以任何方式输出它。但我想你知道如何处理它。