PDF仅对图像href / src网址错误匹配

时间:2018-02-07 10:45:16

标签: regex

我试图让我的正则表达式匹配任何图像网址与某些选项。 在我的匹配图像文件扩展名的集合中,一切都很好,直到我放入gif扩展名。当我这样做时,pdf网址由于某种原因得到匹配。

有人能说清楚这个吗?

我在PHP中使用preg_match_all函数

匹配规则

  1. 可以是src或href链接
  2. 可以是相对或绝对链接
  3. 协议可以是http或https,如果给出
  4. 仅选择匹配的链接
  5. 不区分大小写且全局
  6. 模式(取消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

1 个答案:

答案 0 :(得分:0)

感谢@Micha Wiedenmann。

报价/引文结束

你混淆[和(你想要(jpg | png | jpeg | gif)而不是[jpg | png | ...]。同样适用于[src | href]。