簡體   English   中英

正則表達式匹配 IP 范圍?

[英]Regex to match an IP range?

有人可以幫助我使用正則表達式來匹配一系列 IP。 它應該匹配這樣的東西:

"203.0.113.0-203.0.113.255"

我嘗試了以下但只匹配單個 IP:

((?:\\d{1,3}\\.){3}\\d{1,3})(?:/((?:(?:\\d{1,3}\\.){3}\\d{1,3})|\\d{1,2}))?

您可以將String拆分為2個組件

String[] splitResult = ipRange.split("-");

然后對每個子字符串使用此模式

string pattern = @"\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]?)\.(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部分最多只能達到255,因此您的模式實際上不起作用

如果你有匹配單個IP的正則表達式,那么只需添加-並重復你的正則表達式

String singleIPRegex = "yourRegex";
String rangeRegex = singleIPRegex + "-" + singleIPRegex;

if (someString.matches(rangeRegex)){
    //do your stuff
}

也可以作為singleIPRegex使用

(([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d{1,2}|2[0-4]\\d|25[0-5])

部分

([01]?\\d{1,2}|2[0-4]\\d|25[0-5])

將接受:

  • [01]?\\\\d{1,2} - >范圍0-199,包括以0或00開頭的數字,如01,001
  • 2[0-4]\\\\d - >范圍200-249
  • 25[0-5] - >范圍250-255

試試這個: ((?:\\d{1,3}\\.){3}\\d{1,3})(?:/((?:(?:\\d{1,3}\\.){3}\\d{1,3})|\\d{1,2})){2}

試試這個:

String data = "This http://example.com is a sentence 203.0.113.0-203.0.113.255 https://secure.whatever.org that contains 2 URLs.";


    Pattern pattern = Pattern.compile("\\s((\\d{1,4}\\.?){4}-(\\d{1,4}\\.?){4})\\s");
    Matcher matcher = pattern.matcher(data);

    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }

希望這可以幫助。

您可以在此頁面中為 IP 范圍生成正則表達式https://www.analyticsmarket.com/freetools/ipregex/

對於您的情況,對於203.0.113.0 to 203.0.113.255范圍內的 IP 地址,生成的正則表達式為^203\\.0\\.113\\.([1-9]?\\d|[12]\\d\\d)$

暫無
暫無

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

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