【发布时间】:2017-03-03 17:33:51
【问题描述】:
我正在寻找仅匹配有效在线 URL 的正则表达式。
例如:
exmaple.com
http://exmaple.com
https://exmaple.com
www.exmaple.com
http://www.example.com
https://www.example.com
以及特殊的域和扩展,例如:
t.co
example.deals
sh.party
等等,但不会匹配所有复杂的东西,比如ftp、get 查询或像2.3.3.1 这样的 URL。
我一直在使用'#(www\.|https?://)?[a-z0-9]+\.[a-z0-9]{2,4}\S*#i',但它会检测到日期,例如3.3.2017。
我需要这个,因为我将get_headers 应用于每个找到的 URL,当我对日期等无效 URL 执行 get_headers 时,我得到:
get_headers(http://03.03.2017): failed to open stream: Connection timed out
TL;DR:我正在寻找一个匹配仅您可以应用get_headers() 的 URL 的正则表达式。
感谢您的帮助!
【问题讨论】:
-
有没有包含数字的顶级域名?顺便说一句,“交易”有五个字符。
-
@JosefScript 看起来像
12345.com这样的域没有问题,尽管我很确定没有任何唯一的数字扩展。 -
一个正则表达式不能告诉
online URL,它只能匹配一个模式。匹配域的模式也将很难,chris.inc是公司名称还是域? -
@Aviel Shomron:顶层是“com”部分。有没有像“company.123”这样的东西?