首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Regex & Php验证域名?

如何使用Regex & Php验证域名?
EN

Stack Overflow用户
提问于 2010-06-12 08:00:55
回答 4查看 37.5K关注 0票数 19

我想要一个解决方案,只验证域名,而不是完整的urls,下面的例子是我正在寻找的:

domain.com -> true
domain.net -> true
domain.org -> true
domain.biz -> true
domain.co.uk -> true
sub.domain.com -> true
domain.com/folder -> false
domµ*$ain.com -> false
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-12 08:04:56

这样如何:

^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$
票数 29
EN

Stack Overflow用户

发布于 2014-07-16 14:02:59

在我的例子中,如果域名格式为stackoverflow.com或xxx.stackoverflow.com,则认为域名有效

因此,除了其他堆栈答案之外,我还添加了对www的检查。还有。

function isValidDomainName($domain) {
  if (filter_var(gethostbyname($domain), FILTER_VALIDATE_IP)) {
      return (preg_match('/^www./', $domain)) ? FALSE : TRUE;
  }
  return FALSE;
}

您可以使用以下代码测试该函数

    $domain = array("http://www.domain.com","http://www.domain.com/folder" ,"http://domain.com", "www.domain.com", "domain.com/subfolder", "domain.com","sub.domain.com");
    foreach ($domain as $v) {
        echo isValidDomainName($v) ? "{$v} is valid<br>" : "{$v} is invalid<br>";
    }
票数 1
EN

Stack Overflow用户

发布于 2010-06-12 10:13:33

请记住,正则表达式只能检查某些内容是否格式正确。"www.idonotexistbecauseiammadeuponthespot.com“格式良好,但实际上并不存在...在写这篇文章的时候。;)此外,某些免费的虚拟主机提供商(如Tripod)允许在子域中使用下划线。这显然违反了RFC,但有时它是有效的。

是否要检查该域是否存在?尝试使用dns_get_record而不是正则表达式(只是)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3026957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档