热搜:NVER node 开发 php

有没有匹配url但除了图片之外的正则表达式?

2024-09-07 20:55:01
有没有匹配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)


回复讨论(解决方案)

一般url后面都有其他不相关字符,建议你利用这个字符
例如:
"http://www.abc.com/images/logo.gif"
...前略(?!:jpg|jpeg|gif|png|bmp) (?:")

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

$s='http://www.abc.com/image/index.php"http://www.abc.com/images/logo.gif"';
preg_match_all('#/[^/]*(?<=\....(? var_export($m);

大致吧,你自己理解一下再修改来用
这里\....匹配圆点和三字符的扩展名,没有圆点扩展名或者不是三个字符的情况自己摸索吧

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

$s='http://www.abc.com/image/index.php"http://www.abc.com/images/logo.gif"';
preg_match_all('#/[^/]*(?<=\....(? var_exp……

嗯,有道理,html的图片都是带有标签的,不过还有一种情况就是bbcode的代码,还好也是带有标签的,能不能帮我写这个完整的表达式?我下面举例给你看看,

[img=88,31]http://www.discuz.net/images/logo.gif[/img]


匹配除了上面两种情况的所有url地址,谢谢!!!

晕,不能编辑帖子,上面第一行代码其实也是bbcode来的,就是第二行没有 =88,31 这段,论坛把它转成html了

其实你是想要匹配超链接地址,前面加上href就好匹配了。

(?i)(?:https?|ftp)://[-a-z\d.]+/?(?!/)([-a-z\d+&@#%=~_|!:,.;]+/)*(?#去掉图片的URl)(?![-a-z\d+&@#%=~_!,.;].*?\.(?:jpg|jpeg|gif|png|bmp))[-a-z\d+&@#%=~_!,.;]*(?:\?[a-z\d+&@#/%=~_|!:,.;]*)?