知道为什么这个正则表达式不起作用?
'#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#'
我想找到不属于YouTube的链接。
答案 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...
}