IPv4?
我的建议是先使用规则表达式:
([\d]{1,3}\.){3}[\d]{1,3}
先做初步判断,然后使用StringTokenizer提取每个每个数字,验证其范围。public class IPv4AdressVerifier {
public static boolean verifyIPv4(String address) {
if(!address.matches("([\\d]{1,3}\\.){3}[\\d]{1,3}"))
return false;
StringTokenizer stk = new StringTokenizer(address, ".");
while(stk.hasMoreTokens()) {
String t = stk.nextToken();
try {
if(Integer.parseInt(t) > 255)
return false;
} catch(NumberFormatException e) {
return false;
}
}
return true;
} //Test
public static void main(String[] args) {
String s[] = {
"192.168.0.1", "127.0.0.1", "211.50.250.24",
"211.52.524.50", "257.22.3.1", "211.52.215.", "211.55.215..",
"0..01", "5.5.5.-1", "abcdefg", "Hollo World!"};
for(int i = 0; i < s.length; i++) {
System.out.println("[" + s[i] + "]: " + verifyIPv4(s[i]));
}
}
}
我的建议是先使用规则表达式:
([\d]{1,3}\.){3}[\d]{1,3}
先做初步判断,然后使用StringTokenizer提取每个每个数字,验证其范围。public class IPv4AdressVerifier {
public static boolean verifyIPv4(String address) {
if(!address.matches("([\\d]{1,3}\\.){3}[\\d]{1,3}"))
return false;
StringTokenizer stk = new StringTokenizer(address, ".");
while(stk.hasMoreTokens()) {
String t = stk.nextToken();
try {
if(Integer.parseInt(t) > 255)
return false;
} catch(NumberFormatException e) {
return false;
}
}
return true;
} //Test
public static void main(String[] args) {
String s[] = {
"192.168.0.1", "127.0.0.1", "211.50.250.24",
"211.52.524.50", "257.22.3.1", "211.52.215.", "211.55.215..",
"0..01", "5.5.5.-1", "abcdefg", "Hollo World!"};
for(int i = 0; i < s.length; i++) {
System.out.println("[" + s[i] + "]: " + verifyIPv4(s[i]));
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货