java使用正则表达式从字符串中提取ip地址
在应用程序中,我得到包含IP地址的字符串,但这些字符串没有精确的格式。 我们只知道这些字符串可能包含一个IP地址
下面是字符串的示例:
- “XPSPort”
- “IP_10.29.167.187”
- “10.29.166.193”
我想得到一个Java代码,如果有,则提取字符串的ip地址;如果字符串不包含ip地址,则返回“”
我尝试了此代码,但不起作用:
String IPADDRESS_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])$";
Pattern pattern = Pattern.compile(IPADDRESS_PATTERN);
Matcher matcher = pattern.matcher(ipString);
if (matcher.find()) {
return matcher.group();
}
else{
return "0.0.0.0";
}
我很确定使用RegExp是实现这一点的最好方法,但我对这些不太在行,所以有人能帮我找到好的RegExp吗
提前谢谢
# 1 楼答案
检查此解决方案以验证IPV4和;IPV6地址
资料来源:Determine if the given string is a valid IPv4 or IPv6 address.
# 2 楼答案
IPV4_PATTERN = "^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$"
# 3 楼答案
IP地址正则表达式模式:
有关示例参考,请单击here
# 4 楼答案
理查德的链接帮助我找到了答案。 以下是工作代码: