-3

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

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

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

4

2 回答 2

2

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

请理解,这不会否定 string youtube

您将需要否定前瞻或后视来否定匹配这样的文本:

(?!youtube)

或者

(?<!youtube)

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

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

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

于 2013-04-12T19:43:48.013 回答
0

我会走相反的路

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

if (!preg_match($youtubePattern, $subject)) {
   // not youtube, do whatever...
}
于 2013-04-12T19:49:00.203 回答