9

我已经通过所有可能的方法来获得用于 url 验证的正则表达式,但我没有得到任何.. 我需要的是 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-]*)$/

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

4

5 回答 5

8

filter_var您可以使用和直接验证 urlFILTER_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 )

键盘

于 2013-05-08T06:27:38.153 回答
5

试试这个表达式

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

它将接受您上面提到的所有情况

于 2013-05-08T08:58:16.270 回答
1
((https?:|[^.])\/\/w{0,3}[.]?google.[a-z]{2,4})|google.[a-z]{2,4}

它不是最漂亮的,但它确实有效。我已经检查过http://regexpal.com/

于 2013-05-08T06:44:33.003 回答
0

您可以尝试以下方法

(^(http|https)://)?(www\.)?\w+\.com
于 2013-05-08T06:46:17.757 回答
0

如果您想创建非常好的域验证器,您应该获取域 tlds 的数据库并为它们进行验证。

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

这是该https://github.com/nmmmnu/TLDExtractor的 python 模块

于 2013-05-08T07:05:02.000 回答