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

时间:2013-04-12 19:41:58

标签: php regex url

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

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

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

2 个答案:

答案 0 :(得分:2)

您的正则表达式中包含此细分:^(youtube)

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

你需要消极的前瞻或后视来否定匹配这样的文字:

(?!youtube)

OR

(?<!youtube)

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

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

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

答案 1 :(得分:0)

我会采取相反的方式

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

if (!preg_match($youtubePattern, $subject)) {
   // not youtube, do whatever...
}