我如何使用正则表达式来排除YouTube链接


How do I use regex to exclude YouTube links?

知道为什么这个正则表达式不工作吗?

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

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

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

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

您将需要反向查找或反向查找来否定匹配如下文本:

(?!youtube)

(?<!youtube)

对于你的正则表达式,可以是:

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

但是你需要在你的问题中提供输入字符串的样本。

  • 在这里阅读查看:http://www.regular-expressions.info/lookaround.html

我就会反其道而行

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