日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【正则表达式】IPv4地址的正则匹配

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【正则表达式】IPv4地址的正则匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先亮結論,不想看分析的可以點個贊直接溜!

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

下面是合理性分析:

IPv4地址的格式是nnn.nnn.nnn.nnn,其中每一個nnn為0~255之間的整數。

\b匹配一個單詞邊界,即字與空格間的位置。比如\bCha可匹配Chapter,而ter\b也可以匹配Chapter。

剩下的內容是(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(?: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],它匹配的是0~255。
[0-9]表示0~9的任一整數,[01]表示0或1,|表示或,而?表示出現0次或1次。
所以這個子結構可以解釋為:0~9或10~99或100~199或200~255,綜合起來就是0~255。
值得注意的是畢竟不能把1表示為001,所以這里的處理稍顯復雜。

假設用A代指25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9],剩下的內容變成了(?:(?:A)\.){3}(?:A)。
(?:)是一個結構,表示非捕獲分組。
()表示捕獲分組,()會把每個分組里的匹配的值緩存,使用$n(n是一個整數,表示第n個捕獲組的內容)可用。
但使用圓括號會有一個副作用,使相關的匹配會被緩存,此時可用?:放在第一個選項前(即(?:))來消除這種副作用。

.表示除換行符外的任何字符,所以需要加反斜線以轉義點號,即為\.。
因此(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.)的含義是一個0~255的整數加上一個點號。

而{3}表示將之前的內容重復3次,即將一個0~255的整數加上一個點號這個內容重復3次。
最后再補上一個0~255的整數,即為所求。

總結

以上是生活随笔為你收集整理的【正则表达式】IPv4地址的正则匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。