我一直在用正则表达式搞砸了一段时间。几天前,我开始修改我前段时间发现的正则表达式模式。它检测所有超链接,我的版本应该只检测超链接而不是图像。
http://domain.com/someimage.jpg
不应该被检测到。但它确实部分地检测到了图像。我不知道如何解决这个问题。
原始正则表达式:
/(https?)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,10}(\/\S*)?/i
链接到我的版本:
请帮忙。谢谢!
答案 0 :(得分:2)
你最后需要一个空间。
/((https?)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,10}(\/(?:(\S(?!jpg|jpeg|png|gif))*))?)\s/ig
答案 1 :(得分:0)
我会通过确保用户点击的内容不以图像文件扩展名结束来实现此目的。你提到你正在使用PHP;有一个与原始正则表达式匹配的条件语句:
/(https?)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,10}(\/\S*)?/i
但不匹配表达式END处的任何常见图像文件扩展名:
/^.*\.*[*(jpg$|jpeg$|gif$|png$|tif$)]/i
这适用于图像文件扩展名之前的任何文本字符串; preg_match
将有助于实现这一目标。