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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

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

例子:

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
提问于
用户回答回答于
用户回答回答于

正则表达式模式;

  • 不应该验证领域,如: -domain.comdomain--.com-domain-.-.comdomain.000,等...
  • 验证域名如: schools.k12newTLD.clothinggood.photography,等...

经过进一步的研究; 下面是我能想到的最正确,跨语言和紧凑的模式:

^(?!\-)(?:[a-zA-Z\d\-]{0,62}[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}$

该模式符合规格中定义的大部分规则:

  • 每个标签/级别(按点分割)最多可包含63个字符
  • 完整的域名最多可以有127个级别
  • 完整的域名在其文本表示中不得超过253个字符
  • 每个标签可以由字母,数字和连字符组成
  • 标签不能以连字符开头结尾
  • 顶级域(扩展名)不能是全数字

注1:完整的域名长度检查不包含在正则表达式中。它应该简单地通过本地方法检查,例如strlen(domain) <= 253 注2:该模式适用于大多数语言,包括PHP,Javascript,Python等...

扫码关注云+社区