[英]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.