【发布时间】:2013-09-07 15:00:49
【问题描述】:
我有一个验证普通 IP 地址的模式,即:
private static final String PATTERN =
"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
还有一个验证方法来检查输入是否是有效的 IP 地址:
private static boolean validate(final String ip){
Pattern pattern = Pattern.compile(PATTERN);
Matcher matcher = pattern.matcher(ip);
return matcher.matches();
}
但是,现在我需要添加对 CIDR(例如 84.240.40.0/24)表示法和没有主机的 IP 范围(例如 172.24.105)的验证,我尝试了许多不同的模式,但没有得到具体的结果。有什么建议吗?
【问题讨论】:
-
你试过Google吗?前几个结果就是您想要的。
-
我已经尝试过了,但我无法将我的正则表达式用于正常的 IP 地址检查与 CIDR 和没有主机名的 IP。
-
你看起来不是很努力。 first result 上的第二个正则表达式用于 IPv4 CIDR 范围(例如
192.168.1.20/24)。考虑尝试理解正则表达式,而不是从任何地方复制/粘贴它们。