簡體   English   中英

正則表達式 PCRE2 驗證 IP 地址范圍

[英]Regex PCRE2 verify range of ip address

目前我正在研究用 PCRE2 編寫的正則表達式來檢查 IP 地址范圍

^(10\.).+|(172\.16).+|(192\.168).+

我還需要正則表達式來檢查字符串中是否可以找到 172.16.XX - 172.31.XX 之間的任何 ip

它正在工作的當前正則表達式,但沒有專門檢查這個范圍......它正在捕獲172.16.XX的所有內容

我試過^(10\.).+|(172\.[16-31]).+|(192\.168).+但它不能以這種方式工作。

另外我正在使用https://regex101.com/來調試這個表達式......這是檢查它是否正確的好方法嗎?

您可以使用

\b(?:(?:192\.168|172(?:\.(?:1[6-9]|2\d|3[01])))(?:\.\d{1,3}){2}|10(?:\.\d{1,3}){3})\b
  • \b防止部分單詞匹配的單詞邊界
  • (?:非捕獲組
    • (?:非捕獲組
      • 192\.168匹配 192.168
      • | 或者
      • 172(?:\.(?:1[6-9]|2\d|3[01]))匹配172.然后 16 到 31
    • )關閉非捕獲組
    • (?:\.\d{1,3}){2}匹配 2 次. 和 1-3 位數字
    • | 或者
    • 10(?:\.\d{1,3}){3}匹配 10 和 3 次. 和 1-3 位數字
  • )關閉非捕獲組
  • \b一個詞的邊界

正則表達式演示

如果你想讓\d{1,3}數字更具體,那么你也可以使用:

(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM