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