知道为什么这个正则表达式不起作用吗?
'#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#'
我想查找不属于 YouTube 的链接。
您的正则表达式中有此段:^(youtube)
请理解,这不会否定 string youtube
。
您将需要否定前瞻或后视来否定匹配这样的文本:
(?!youtube)
或者
(?<!youtube)
对于您的正则表达式,它可以是:
#((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...
}