Preg匹配imgur.com链接

时间:2017-10-20 15:25:37

标签: php regex

我需要preg_match指向imgur.com服务的链接。 所以,我的代码是:

if (!preg_match("/(http|https)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}
(\/\$_POST['request'])) { ... } 

如何使其仅适用于那些链接?

http://imgur.com/aBc1
  https://imgur.com/a/aBc1
http://www.imgur.com/a/aBc1
  https://www.imgur.com/a/aBc1
http://imgur.com/gallery/aBc1
  https://imgur.com/gallery/aBc1
http://i.imgur.com/aBc1.png(.jpg,.jpeg,.gif)
  https://i.imgur.com/aBc1.png(.jpg,.jpeg,.gif)

2 个答案:

答案 0 :(得分:1)

这应该做:

/(http|https)\:\/\/[a-z]{0,4}[\.]*imgur+\.[a-zA-Z]{2,3}\/[a-zA-Z0-9]+(\/)*[a-zA-Z0-9]*[\.]*(jpg|png|jpeg|gif)*/g
  • (http|https):检查网址中的httphttps
  • [a-z\.]{0,4}:检查www./i.等。
  • (jpg|png|jpeg|gif)*检测您的给定格式(如果有)

现场演示here

答案 1 :(得分:1)

此模式将匹配您提供的所有网址

/http(s)?\:\/\/(.*\.)?imgur.com\/.*/

说明:

  • http匹配文字字符' http'
  • (s)?可选择最多匹配一个'
  • \:\/\/匹配文字字符'://'
  • (.*\.)?可选择匹配任意数量的任何字符,后跟句点/点
  • imgur.com\/匹配' imgur.com /'
  • .*匹配任意数量的任何其他字符

DEMO