4 3 2 主機名稱驗證

2021-04-16 00:28:43 字數 1741 閱讀 1223

網際網路上的主機名稱一般由單詞字元和字元.組成,如myhost.com、wname.net、123.cn等。

主機名稱被字元.分割,被分割的每乙個字串由單詞字元組成,但是字元-不能是該字串的第乙個字元或者最後乙個字元。另外,被分割後的每乙個字串最大長度為63、最小長度為1。以下正規表示式能夠驗證被分割後的每乙個字串。其中,長度為1的字串由表示式[a-za-z0-9]匹配,長度大於1的字串由表示式[a-za-z0-9]/w[a-za-z0-9])匹配。

([a-za-z0-9]/w[a-za-z0-9])|[a-za-z0-9]

(56)

正規表示式(56)解釋:

[a-za-z0-9]能夠匹配除了字元-之外的任何單詞字元。

/w可以匹配由單詞字元組成的、最小長度為0的、最大長度為61的字串。

使用上述正規表示式,可以擴充套件為驗證主機名稱的正規表示式。以下正規表示式能夠簡單驗證主機名稱。

(([a-za-z0-9]/w[a-za-z0-9]/.)|([a-za-z0-9]/.))*(([a-za-z0-9]/w[a-za-z0-9])|[a-za-z0-9])(57)

正規表示式(57)解釋:

[a-za-z0-9]能夠匹配除了字元-之外的任何單詞字元。

/w可以匹配由單詞字元組成的、最小長度為0的、最大長度為61的字串。

/.匹配字元.。

(([a-za-z0-9]/w[a-za-z0-9]/.)|([a-za-z0-9]/.))*可以匹配至少重複「被分割後的每乙個字串+字元.」0次的字串。

使用工具regex tester測試正規表示式(57),結果如圖所示。

然而,在目前網路的主機名稱中,被分割後的最後乙個字串是有限的,而不是由單詞字串組成的任意字串。如com、edu、gov、millnet、org、net、cn等。正規表示式(([a-za-z0-9]/w[a-za-z0-9]/.)|([a-za-z0-9]/.))*(([a-za-z0-9]/w[a-za-z0-9])|[a-za-z0-9])僅僅能夠簡單驗證主機名稱。以下正規表示式能夠精確驗證主機名稱。

(([a-za-z0-9]/w[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的字串。

/.匹配字元.。

(([a-za-z0-9]/w[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]可以匹配給定的字串(如com、edu、gov、millnet、org、net等)或者由字母組成的長度為2的字串。

使用工具regex tester測試正規表示式正規表示式(58),結果如圖所示。

18 4 1 查詢主機名稱

查詢主機名稱是通過訪問主機資料庫實現的,伺服器資料庫介面函式在標頭檔案 netdb.h 中定義。與此相關的函式有 sethostbyaddr 和gethostbyname 兩個,它們的一般形式如下 struct hostent gethostbyaddr const void addr,size t...

HP UNIX 修改主機名稱

今天網上看到修改hp unix主機名稱文章,借來分享下,權當借花獻佛了。hp ux修改主機ip位址 方法一1.set parms hostname 2.set parms address 3.修改 etc hosts檔案 注意 上面的方法實際修改了 etc rc.config.d netconf,重...

Centos 修改主機名稱

centos 配置主機名稱 1.首先查詢一下當前的主機名稱 root localhost hostnamectl status static hostname 永久主機名 pretty hostname 臨時主機名 icon name computer server chassis server m...