正则表达式是否匹配DNS主机名或IP地址?

是否有人手头有一个正则表达式,可以匹配任何合法的DNS主机名或IP地址

编写一个在95%的时间内都能正常工作的程序很容易,但我希望得到经过良好测试的程序,能够与DNS主机名的最新RFC规范完全匹配

可以单独使用以下正则表达式,也可以将它们组合到关节或表达式中

ValidIpAddressRegex=&quot^([0-9]|[1-9][0-9]|[1-9][0-9]|[2]2[0-4][0-9]|[25[0-5])\{3}([0-9]|[1-9][0-9]| 1[0-9]{2}2[0-4][0-9]| 25[0-5])”;;
ValidHostnameRegex=&quot^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])*([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])$”;;

ValidIpAddressRegex匹配有效的IP地址和ValidHostnameRegex有效的主机名。根据您使用的语言,可能必须使用\进行转义


根据RFC 1123,ValidHostnameRegex有效。最初,RFC952指定主机名段不能以数字开头

http://en.wikipedia.org/wiki/Hostname

原始规范
RFC中的主机名
952,
强制要求标签不能启动
带数字或连字符,以及
不能以连字符结尾。但是,
后续规范(RFC)
1123)
允许启动的主机名标签
有数字

Valid952HostnameRegex=&quot^([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])*([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])”;;

发表评论