使用正则表达式验证url

时间:2013-05-08 06:25:04

标签: php regex

我已经通过所有可能的方式来获取url验证的正则表达式, 但我没有得到任何.. 我需要的是网址可以像

google.com
http://google.com
https://google.com
http://www.google.com
https://www.google.com

但如果它只是google

则不应该允许

最后,问题是.extensions是强制性的

我试过这个/^[a-z0-9-]+(.[a-z0-9-]*)(.[a-z0-9-]*)$/

在这种情况下,任何人都可以帮助我..

5 个答案:

答案 0 :(得分:8)

您可以使用filter_varFILTER_VALIDATE_URL

直接验证网址
if (filter_var($url, FILTER_VALIDATE_URL) !== false)

修改

使用正则表达式

$subject = "http://www.google.com";
$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
preg_match($pattern, $subject, $matches);
print_r($matches);

输出

Array ( [0] => http://www.google.com )

Codepad

答案 1 :(得分:5)

试试这个表达式

/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi

它将接受您上面提到的所有案件

答案 2 :(得分:1)

((https?:|[^.])\/\/w{0,3}[.]?google.[a-z]{2,4})|google.[a-z]{2,4}

它不是最漂亮的但是有效。我已查看http://regexpal.com/

答案 3 :(得分:0)

您可以尝试以下

(^(http|https)://)?(www\.)?\w+\.com

答案 4 :(得分:0)

如果你想创建真正好的域验证器,你应该获得域tld的数据库并对它们进行验证。

Mozilla有这个列表:http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1

这是https://github.com/nmmmnu/TLDExtractor

的python模块