日期:2014-05-17  浏览次数:20497 次

有没有匹配url但除了图片之外的正则表达式?
例如http://www.abc.com/和http://www.abc.com/images/index.php都能匹配,
但http://www.abc.com/images/logo.gif就不能匹配。
我写的表达式会匹配到http://www.abc.com/images/logo.这段
(http\://)?([a-z0-9_-]+\.)+(com|net|cn|org){1}(\/[a-z0-9_-]+)*\.?(?!jpg|jpeg|gif|png|bmp)

------解决方案--------------------
刚才没有测试环境,随意写的,想想有点问题,找了个环境重新写了一个

$s='http://www.abc.com/image/index.php"http://www.abc.com/images/logo.gif"';
preg_match_all('#/[^/]*(?<=\....(?<!jpg
------解决方案--------------------
gif))"#', $s, $m); // -6
var_export($m);

大致吧,你自己理解一下再修改来用
这里\....匹配圆点和三字符的扩展名,没有圆点扩展名或者不是三个字符的情况自己摸索吧
------解决方案--------------------
(?i)(?:https?
------解决方案--------------------
ftp)://[-a-z\d.]+/?(?!/)([-a-z\d+&@#%=~_
------解决方案--------------------
!:,.;]+/)*(?#去掉图片的URl)(?![-a-z\d+&@#%=~_!,.;].*?\.(?:jpg
------解决方案--------------------
jpeg
------解决方案--------------------
gif
------解决方案--------------------
png
------解决方案--------------------
bmp))[-a-z\d+&@#%=~_!,.;]*(?:\?[a-z\d+&@#/%=~_
------解决方案--------------------
!:,.;]*)?