我想要一个解决方案,只验证域名,而不是完整的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
发布于 2010-06-12 08:04:56
这样如何:
^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$
发布于 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>";
}
发布于 2010-06-12 10:13:33
请记住,正则表达式只能检查某些内容是否格式正确。"www.idonotexistbecauseiammadeuponthespot.com“格式良好,但实际上并不存在...在写这篇文章的时候。;)此外,某些免费的虚拟主机提供商(如Tripod)允许在子域中使用下划线。这显然违反了RFC,但有时它是有效的。
是否要检查该域是否存在?尝试使用dns_get_record而不是正则表达式(只是)。
https://stackoverflow.com/questions/3026957
复制相似问题