【问题标题】:REGEX Pattern For URL Validation用于 URL 验证的 REGEX 模式
【发布时间】:2011-01-08 21:06:41
【问题描述】:

我正在使用这个 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 模式。但我不能。我该如何使用它?

【问题讨论】:

  • 第一个正则表达式将从任何现有 url 路径中删除太多有效字符,并在任何新奇的 http://[::1]/~user/a+b?x=1#2 上失败。
  • regex problem with url 的可能重复项

标签: php regex validation url


【解决方案1】:

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

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

【讨论】:

  • 我如何在 PHP 中使用第二个正则表达式?
  • preg_match("^(\w+://)?\w+\.\w+$", $url) ?
  • 需要正则表达式,但是是的
猜你喜欢
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
相关资源
最近更新 更多