有人可以帮我构建正则表达式以确保字符串以下列之一开头吗?
https://www.youtube.com
https://www.youtube.be
http://www.youtube.com
http://www.youtube.be
https://youtube.com
https://youtube.be
http://youtube.com
http://youtube.be
www.youtube.com
www.youtube.be
youtube.com
youtube.be
我正在研究允许人们将YouTube视频添加到网页的PHP系统,我只需要确保用户添加的链接开始正确并且也是有效的URL。那应该足够安全,以便在用户输入后存储字符串,并在以后查看时嵌入为YouTube视频。
答案 0 :(得分:1)
这就像
一样简单^(https?:\/\/)?(www\.)?youtube\.(be|com)
一点点解释:
^
- 字符串的开头https?
- http
,可选s
:\/\/
- ://
(www\.)?
- 可选www.
youtube\.
- youtube.
(be|com)
- be
或com
如果您还想匹配youtu.be
,请使用此项:
^(https?:\/\/)?(www\.)?(youtube\.(be|com)|youtu\.be)
答案 1 :(得分:0)
((?:https?:\/\/)?(?:www.)?youtu(?:\.?be)?\.(?:com|be))
包括:
https://www.youtube.com
https://www.youtube.be
http://www.youtube.com
http://www.youtube.be
https://youtube.com
https://youtube.be
http://youtube.com
http://youtube.be
www.youtube.com
www.youtube.be
youtube.com
youtube.be
youtu.be
www.youtu.be
http://www.youtu.be
https://www.youtu.be
http://youtu.be
https://youtu.be
PHP:
$re = "/((?:https?:\\/\\/)?(?:www.)?youtu(?:\\.?be)?\\.(?:com|be))/";
$str = "https://www.youtube.com\nhttps://www.youtube.be\nhttp://www.youtube.com\nhttp://www.youtube.be\nhttps://youtube.com\nhttps://youtube.be\nhttp://youtube.com\nhttp://youtube.be\nwww.youtube.com\nwww.youtube.be\nyoutube.com\nyoutube.be\nyoutu.be\nwww.youtu.be\nhttp://www.youtu.be\nhttps://www.youtu.be\nhttp://youtu.be\nhttps://youtu.be\n\n\nbsadf.fds\n\nyoutube\.(be|com)";
preg_match_all($re, $str, $matches);
UPD: 是的,@ nicael是对的,但我会改变:
((?:https?:\/\/)?(?:www\.)?(?:youtube\.(?:be|com)|youtu\.be))