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