4.3.2 主机名称验证

  互联网上的主机名称一般由单词字符和字符.组成,如myhost.comwname.net123.cn等。

主机名称被字符.分割,被分割的每一个字符串由单词字符组成,但是字符-不能是该字符串的第一个字符或者最后一个字符。另外,被分割后的每一个字符串最大长度为63、最小长度为1。以下正则表达式能够验证被分割后的每一个字符串。其中,长度为1的字符串由表达式[a-zA-Z0-9]匹配,长度大于1的字符串由表达式[a-zA-Z0-9]/w{0,61}[a-zA-Z0-9])匹配。

([a-zA-Z0-9]/w{0,61}[a-zA-Z0-9])|[a-zA-Z0-9]                              (56)

  正则表达式(56)解释:

      [a-zA-Z0-9]能够匹配除了字符-之外的任何单词字符。

      /w{0,61}可以匹配由单词字符组成的、最小长度为0的、最大长度为61的字符串。

  使用上述正则表达式,可以扩展为验证主机名称的正则表达式。以下正则表达式能够简单验证主机名称。

(([a-zA-Z0-9]/w{0,61}[a-zA-Z0-9]/.)|([a-zA-Z0-9]/.))*(([a-zA-Z0-9]/w{0,61}[a-zA-Z0-9])|[a-zA-Z0-9])     (57)

  正则表达式(57)解释:

      [a-zA-Z0-9]能够匹配除了字符-之外的任何单词字符。

      /w{0,61}可以匹配由单词字符组成的、最小长度为0的、最大长度为61的字符串。

      /.匹配字符.

      (([a-zA-Z0-9]/w{0,61}[a-zA-Z0-9]/.)|([a-zA-Z0-9]/.))*可以匹配至少重复“被分割后的每一个字符串+字符.0次的字符串。

  使用工具Regex Tester测试正则表达式(57),结果如图所示。

 

 

 

  然而,在目前网络的主机名称中,被分割后的最后一个字符串是有限的,而不是由单词字符串组成的任意字符串。如comedugovmillnetorgnetcn等。正则表达式(([a-zA-Z0-9]/w{0,61}[a-zA-Z0-9]/.)|([a-zA-Z0-9]/.))*(([a-zA-Z0-9]/w{0,61}[a-zA-Z0-9])|[a-zA-Z0-9])仅仅能够简单验证主机名称。以下正则表达式能够精确验证主机名称。

(([a-zA-Z0-9]/w{0,61}[a-zA-Z0-9]/.)|([a-zA-Z0-9]/.))*(com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero|[a-z][a-z])                          (58)

  正则表达式(58)解释:

      [a-zA-Z0-9]能够匹配除了字符-之外的任何单词字符。

      /w{0,61}可以匹配由单词字符组成的、最小长度为0的、最大长度为61的字符串。

      /.匹配字符.

      (([a-zA-Z0-9]/w{0,61}[a-zA-Z0-9]/.)|([a-zA-Z0-9]/.))*可以匹配至少重复“被分割后的每一个字符串+字符.0次的字符串。

      com|edu|gov|int|mil|net|org|biz|info|name|museum|coop|aero|[a-z][a-z]可以匹配给定的字符串(如comedugovmillnetorgnet等)或者由字母组成的长度为2的字符串。

  使用工具Regex Tester测试正则表达式正则表达式(58),结果如图所示。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值