我试图让我的正则表达式匹配任何图像网址与某些选项。
在我的匹配图像文件扩展名的集合中,一切都很好,直到我放入gif
扩展名。当我这样做时,pdf
网址由于某种原因得到匹配。
有人能说清楚这个吗?
我在PHP中使用preg_match_all
函数
匹配规则
模式(取消gif和pdf)
[src|href]="([(https|http):\/\/]?[^"]*.[jpg|png|jpeg|gif])"
测试字符串
Should match <a href="http://blog.mysite.com/wp-content/uploads/2014/04/13061-someimage.jpg">
Should match <a href="/wp-content/uploads/2014/04/13061-someimage.jpg">
No match <a href="/wp-content/uploads/2014/04/13061-somedoc.pdf"></a>
No match <a href="/wp-content/uploads/2014/04/13061-somedoc.pdf"></a>
Should match <img href="http://blog.mysite.com/wp-content/uploads/2014/04/13061-someimage.jpg"/>
Should match <img href="/wp-content/uploads/2014/04/13061-someimage.gif"/>
Should match <img href="http://blog.mysite.com/wp-content/uploads/2014/04/13061-someimage.jpg" />
Should match <img href="/wp-content/uploads/2014/04/13061-someimage.jpg" />
www.regex101.com小提琴:https://regex101.com/r/x3vVSx/1
答案 0 :(得分:0)
感谢@Micha Wiedenmann。
报价/引文结束
你混淆[和(你想要(jpg | png | jpeg | gif)而不是[jpg | png | ...]。同样适用于[src | href]。