我正在尝试将Youtube网址与正则表达式匹配,以查看它是否有效。这是我的代码:
if(preg_match('\bhttp://youtube.com/watch\?v=.*\b', $link))
{
echo "matched youtube";
}
但是我收到了一个错误:
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\ajax\youtube.php on line 22
我承认我是正则表达式的完全新手,我不太了解它们,但我正在努力学习,因为我这样做。我使用这个在线正则表达式工具制作了上面的正则表达式:
它在那里工作。那么我做错了什么,是否有更好的方法来验证youtube网址?
感谢。 :)
答案 0 :(得分:1)
这里真的没有必要使用preg_match:
$url = "http://youtube.com/watch?v=abc";
if(strpos($url, "http://youtube.com/watch?v=") === 0) {
echo "Valid";
}
答案 1 :(得分:1)
PCRE要求delimiters分隔正则表达式和可选modifiers。
在这种情况下,假定\
,但\
不是有效的分隔符(请参阅错误消息)。使用其他字符,例如~
:
preg_match('~\bhttp://youtube\.com/watch\?v=.*\b~', $link)
答案 2 :(得分:0)
您应该在正则表达式中添加额外的分隔符。这用于提供可选参数:
preg_match('"\bhttp://youtube.com/watch\?v=.*\b"', $link)
符号/
通常用作正则表达式分隔符,但在您的情况下,它会强制转义内部/
。因此,为了更清晰的观点,我建议使用"
。
答案 3 :(得分:0)
使用preg_match时,需要用正确的分隔符括起正则表达式。
例如:
preg_match('/\bhttp://youtube.com/watch\?v=.*\b/', $link)
在您的示例中\ b代表字边界,这不是有效的字母数字分隔符,因此错误消息