用正則表達式解鎖IP地址那點事:何在正則表達式中查找和驗證IP地址

要爲ip地址編寫正則表達式,最基本的就是要了解如何爲數字編寫正則表達式代碼。正則表達式不能將數字理解爲數字,而只能將其理解爲字符串字符,因此以數字或數學運算形式給出的任何範圍都不起作用。正如所有情況一樣,首先要爲ip編寫正則表達式,我們必須分析問題並可視化這種情況下的複雜性,以便編寫高效且有效的正則表達式代碼以匹配Internet協議地址。

如果您想通過簡單的示例在逐步學習Complete Regex,我建議可以研究更多關於正則表達式的數字和數字範圍這篇博客:https://blog.csdn.net/pagean/article/details/106032082

IP地址格式

最初,ip地址的格式似乎令人生畏,因爲它包含四個數字範圍和三個句點作爲分隔符。但是仔細看一看,就會發現實際上這四個數字具有相同的性質,範圍從0到255,因此,如果我們爲一個數字編寫正則表達式,我們可以簡單地將其複製並粘貼三遍,這將是IP地址的正則表達式代碼。

  • IP地址匹配和驗證的正則表達式

首先要看一個IP地址。如上圖所示,IP地址的格式爲

X . X . X . X

其中X可以是0到255之間的任何數字,並且該值不能大於255。但是對於0,可以使用不同的表示形式,例如0、00、000,此外1可以表示爲001,依此類推。我們必須牢記,也可能是001或009,並且代碼除了1和9外還必須匹配此格式。對於ip地址的這種複雜結構,我們將使用分而治之的技術。
如果我們可以爲X編寫正則表達式,那麼我們可以輕鬆地爲整個ip地址編寫正則表達式,因爲此x重複四次,並以點作爲分隔符。

  • 如何匹配IP地址X
    在爲數字編寫正則表達式時,必須記住,正則表達式不知道數字,但會將其作爲字符串字符。因此,解決方案[0-255]無效。您能猜出此正則表達式將匹配[0-255]嗎?檢查它,結果肯定會讓您感到驚訝。在ip地址中,我們範圍內的最大數字爲255,即三個字符長。最小數字爲0,即一個字符長。要編寫一個匹配該範圍0-255的正則表達式,我們會將這個範圍分解成較小的範圍,可以很容易地對其進行管理以編寫正則表達式。

所以細分是

  1. 250 -255

  2. 200-249

  3. 0-199

細分後,我們必須爲三個範圍而不是單個範圍編寫正則表達式。

從第一個組件或範圍250-255開始,第一個範圍250-255的正則表達式代碼爲/ 25 [0-5] /該代碼將匹配從250到255的數字。這裏共有六個數字250、251、252 ,253、254、255。現在在這些數字中25很常見,因此我們取25的範圍爲0-5。

對於第二部分或範圍200至249。第一位只有2是通用的,因此我們將寫爲2,第二位之後的最小值爲0,最大值爲4,因此範圍爲[0-4],第三位最小數爲0,最大數爲9,因此該範圍將是[0-9],排在第三位。那麼,此範圍的完整正則表達式將是/ 2 [0-4] [0-9] /它將匹配200到249之間的任何數字。

同樣,對於匹配0-199的代碼,其代碼應爲/ [01]?[0-9] [0-9]?/。此正則表達式還將匹配數字,例如0,00,000,001,009,011,010等,因爲問號使該組成爲字面量是一個可選實體。

X的正則表達式爲(25 [0-5] | 2 [0-4] [0-9] | [01]?[0-9] [0-9]?)

IP地址完整代碼的正則表達式:

在爲X編寫正則表達式之後,現在我們可以重複它以編寫ip地址的完整代碼。這是例子

\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

這是ip regex匹配或驗證的完整代碼。您可以在任何編程語言(例如Perl,java,Python,javascript,Ruby等)中使用它。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章