我需要匹配这样的图片网址:
http://site.com/site.com/files/images/img (5).jpg
这样的事情很好:
.replace(/(http:\/\/([ \S]+\.(jpg|png|gif)))/ig, "<div style=\"background: url($1)\"></div>")
除非我有这样的事情:
http://site.com/site.com/files/audio/audiofile.mp3 http://site.com/site.com/files/images/img (5).jpg
如何仅匹配图像?
谢谢!
编辑:我正在使用javascript。
答案 0 :(得分:2)
假设图像始终位于“images”目录中,请尝试:
http://.*/images/(.*?).(jpe?g|gif|png)
如果你不能假设图像目录:
http://.*/(.*?).(jpe?g|gif|png)
第1组和第2组应该有你想要的(文件名和扩展名)。
答案 1 :(得分:1)
正确的网址中不应包含空格,而应包含%20
或加号'+'
。如果您使用这些替代方案编写它们,那么您的匹配将更加容易。
答案 2 :(得分:0)
为什么不:
/([^/]+\.(jpg|png|gif))$
答案 3 :(得分:0)
使用
http:\/\/.*\/(.*)\.(jpg|png|gif)
如果您想要的只是图像的名称,那么应该可以解决问题。第一组是文件名,第二组是文件扩展名。
答案 4 :(得分:0)
您能否假设网址将以空格分隔,或返回分隔?
如你所知,你可以假设这个输入吗?
site.com/images/images/lol (5).jpg
site.com/images/other/radio.mp3
site.com/images/images/copter (3).jpg
如果要将分隔符作为字符串的一部分返回,那么事情就变得棘手了。你在这说什么卷?您可以半手动完成,还是必须自动化流程?
答案 5 :(得分:0)
这将是一种方法:
^((\w+):)?\/\/((\w|\.)+(:\d+)?)[^:]+\.(jpe?g|gif|png)$
对结肠进行数学训练。 (:) 在这种情况下,它只接受协议和端口(可选)。
这不匹配:
http://site.com/site.com/files/audio/audiofile.mp3 http://site.com/site.com/files/images/img (5).jpg
这将匹配(第二个http://删除后的冒号)
“ /audiofile.mp3 http / ”将被视为“ / audio / ”中的文件夹
http://site.com/site.com/files/audio/audiofile.mp3 http//site.com/site.com/files/images/img (5).jpg
这不是万无一失的。文件名中不允许使用其他字符( * |“&lt;&gt; )