题目
分析
这道题就是判定给定字符串是否符合ipv4或者ipv6的格式
ipv4的格式:
1、按照点分十进制法每八位转换成一个十进制数,用“.”分割
2、每个十进制数的范围0-255
3、每个十进制数不能以0开头,即如果是二进制(1001),只能写成9,不能写成09
ipv6的格式:
1、每16位进行分割,分隔符“:”,因此共有八部分
2、每部分按照16进制表示,即每4位表示成一个16进制的数
3、每部分可以长度在1-4,可以以0开头
代码:利用正则表达式
import java.util.*;
import java.util.regex.Pattern;
public class Solution {
/**
* 验证IP地址
* @param IP string字符串 一个IP地址字符串
* @return string字符串
*/
public String solve (String IP) {
// write code here
//ipv4的匹配规则
String ipv4 = "((([1-9]\\d)|(\\d)|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d)|([1-9]\\d)|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))";
//ipv6的匹配规则
String ipv6 = "((([0-9a-fA-F]){1,4})\\:){7}([0-9a-fA-F]){1,4}";
boolean isIpv4 = Pattern.matches(ipv4,IP);
boolean isIpv6 = Pattern.matches(ipv6,IP);
if(isIpv4 == true) {
return "IPv4";
} else if(isIpv6 == true) {
return "IPv6";
} else {
return "Neither";
}
}
}