创建正则表达式以检查域和URL

时间:2016-07-31 12:23:54

标签: php regex youtube

有人可以帮我构建正则表达式以确保字符串以下列之一开头吗?

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视频。

2 个答案:

答案 0 :(得分:1)

这就像

一样简单
^(https?:\/\/)?(www\.)?youtube\.(be|com)

一点点解释:

  • ^ - 字符串的开头
  • https? - http,可选s
  • :\/\/ - ://
  • (www\.)? - 可选www.
  • youtube\. - youtube.
  • (be|com) - becom

如果您还想匹配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))