知道为什么这个正则表达式不工作吗?
'#((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...
}