任何想法为什么这个正则表达式不工作?如何使用正则表达式排除YouTube链接?
'#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#'
我想找到不属于YouTube的链接。
任何想法为什么这个正则表达式不工作?如何使用正则表达式排除YouTube链接?
'#((http://|www.)(.*^(youtube)\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#'
我想找到不属于YouTube的链接。
你有这个段在您正则表达式:^(youtube)
请理解这不会否定串youtube
。
您需要负超前或回顾后否定匹配这样的文字:
(?!youtube)
OR
(?<!youtube)
为了您的正则表达式,可以这样:
#((http://|www.)((?!youtube)[^.]+\.(com|org|co.il|net|us|ws|info|tv|me|tk|co.uk).*))#
但是你需要在你的问题中提供你的输入字符串的样本。
那么我该怎么做呢..... – user2275812
谢谢!作品! (?<!youtube) – user2275812
如果这个答案对你有用,那么你可以通过点击这个答案旁边的勾号将它标记为已接受? – anubhava
我会走向相反的方向
$youtubePattern = '%(https?:\/\/(www\.)?youtube\.([a-z]{2,3}).*)%six';
if (!preg_match($youtubePattern, $subject)) {
// not youtube, do whatever...
}
为什么不[解析URL](http://php.net/manual/en /function.parse-url.php)并从“PHP_URL_HOST”中检查[二级域名](http://en.wikipedia.org/wiki/Second-level_domain)?我建议不要为自己创建[2个问题](http://www.codinghorror.com/blog/2008/06/regular-expressions-now-you-have-two-problems.html)。 – Joe