Php 如何使用正则表达式排除YouTube链接?

Php 如何使用正则表达式排除YouTube链接?,php,regex,url,Php,Regex,Url,知道为什么这个正则表达式不起作用吗 '#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#' 我想查找不属于YouTube的链接。您的正则表达式中有此段:^(YouTube) 请理解,这不会否定字符串youtube 您将需要负向前看或向后看来否定匹配的文本,如下所示: (?!youtube) 或 但是,您需要在问题中提供输入字符串的示例 在此处阅读有关环顾四周的信息: 我会走相反的

知道为什么这个正则表达式不起作用吗

'#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#'

我想查找不属于YouTube的链接。

您的正则表达式中有此段:
^(YouTube)

请理解,这不会否定字符串
youtube

您将需要负向前看或向后看来否定匹配的文本,如下所示:

(?!youtube)

但是,您需要在问题中提供输入字符串的示例

  • 在此处阅读有关环顾四周的信息:

    • 我会走相反的路

      $youtubePattern = '%(https?:\/\/(www\.)?youtube\.([a-z]{2,3}).*)%six';
      
      if (!preg_match($youtubePattern, $subject)) {
         // not youtube, do whatever...
      }
      

      为什么不正确地从
      PHP\u URL\u主机检查?我建议您不要为自己创建。如果这个答案对您有效,那么您可以通过单击这个答案旁边的勾号将其标记为已接受吗?
      
      #((http://|www.)((?!youtube)[^.]+\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#
      
      $youtubePattern = '%(https?:\/\/(www\.)?youtube\.([a-z]{2,3}).*)%six';
      
      if (!preg_match($youtubePattern, $subject)) {
         // not youtube, do whatever...
      }