正则表达式匹配图像网址与空格

时间:2009-06-30 23:57:35

标签: javascript regex url

我需要匹配这样的图片网址:

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。

6 个答案:

答案 0 :(得分:2)

假设图像始终位于“images”目录中,请尝试:

http://.*/images/(.*?).(jpe?g|gif|png)

如果你不能假设图像目录:

http://.*/(.*?).(jpe?g|gif|png)

第1组和第2组应该有你想要的(文件名和扩展名)。

我测试了正则表达式herehere,它似乎可以做你想要的。

答案 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;