【问题标题】:Create regex to check domain and URL创建正则表达式以检查域和 URL
【发布时间】:2016-12-05 15:41:06
【问题描述】:

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

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

【问题讨论】:

  • regexr.com 是一个非常好的学习正则表达式和尝试这类东西的网站

标签: php regex youtube


【解决方案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)

【讨论】:

  • 会检查 http 和 https 吗?
  • 谢谢。稍后返回工作时进行测试并报告。
  • @Peter 添加了解释,以防您无法立即理解。
  • 太好了,感谢您的回答和额外的解释。
【解决方案2】:
((?: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);

更新: 是的,@nicael 是对的,但我会改变:

((?:https?:\/\/)?(?:www\.)?(?:youtube\.(?:be|com)|youtu\.be))

【讨论】:

  • OP 并没有真正要求youtu.be。虽然,无论如何你都错误地实现了它。例如,匹配 youtu.com
猜你喜欢
  • 2015-03-12
  • 2011-12-19
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多