用于URL验证的REGEX模式

时间:2011-01-08 21:06:42

标签: php regex validation url

我正在使用此PHP函数来验证URL。

$url = preg_replace("/[^A-Za-z0-9-\/\.\:]/", "", trim($url));
$url = preg_replace('%^(?!https?://www\.).*%', 'http://www\.$0', $url);

但是,这对我来说并不完美。我想要这个控件:

1 - 是以 http:// 还是 https:// 开头的?如果没有,请添加 http (或 https

2 - 如果它没有子域名,如果它没有 www ,请添加。但如果它有子域名,请不要添加 www

示例:

example.com
CONVERT -> http://www.example.com

www.example.com
CONVERT -> http://www.example.com

subdomain.example.com
CONVERT -> http://subdomain.example.com

http://subdomain.example.com
CONVERT -> http://subdomain.example.com

所以,我需要改进我的REGEX模式。但我不能。我怎么用这个?

1 个答案:

答案 0 :(得分:0)

从第二个正则表达式中删除www\.。这将使它适用于子域示例。

如果您想让它更智能,请使用if和第二个正则表达式检查^(\w+://)?\w+\.\w+$之前的前缀为http://或额外的www。