boolean b = Pattern.matches("(前面所说的表达式)", "192.168.0.6");给你一个文档,讲解正则表达式: http://www.regexlab.com/zh/regref.htm给你一个测试工具,可以进行测试: http://www.regexlab.com/zh/workshop.asp?pat=%5Cb%28%28%3F%21%5Cd%5Cd%5Cd%29%5Cd%2B%7C1%5Cd%5Cd%7C2%5B0%2D4%5D%5Cd%7C25%5B0%2D5%5D%29%5C%2E%28%28%3F%21%5Cd%5Cd%5Cd%29%5Cd%2B%7C1%5Cd%5Cd%7C2%5B0%2D4%5D%5Cd%7C25%5B0%2D5%5D%29%5C%2E%28%28%3F%21%5Cd%5Cd%5Cd%29%5Cd%2B%7C1%5Cd%5Cd%7C2%5B0%2D4%5D%5Cd%7C25%5B0%2D5%5D%29%5C%2E%28%28%3F%21%5Cd%5Cd%5Cd%29%5Cd%2B%7C1%5Cd%5Cd%7C2%5B0%2D4%5D%5Cd%7C25%5B0%2D5%5D%29%5Cb&txt=192%2E168%2E0%2E6%2C+192%2E256%2E0%2E6%2C+192%2E168%2E0%2E255
Pattern p = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b"); Matcher m = p.matcher("192.168.0.6"); boolean b = m.matches(); // ==> true m = p.matcher("192.256.0.6"); b = m.matches(); // ==> false
光杆兵给的boolean b = Pattern.matches("(前面所说的表达式)", "192.168.0.6");不行 表达式中有一段报错。 不过我把机枪兵给的程序改了一下,可以使用了。谢谢两位。
表达式中的 '\' 写在 java 代码中,需要写成 '\\'
Pattern p = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b");Matcher m = p.matcher("192.168.0.6"); boolean b = m.matches(); // ==> true
System.out.println(b);m = p.matcher("192.256.0.6"); b = m.matches(); // ==> falseSystem.out.println(b);
我找到的这个不知道是那个语言下面的东西,大家看看帮忙改造一下。
g_fValidateForm.regexp_ip = /^((25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)$/;
当然了,能给出整个判断ip的程序是最好的。
先把它分成四段存入String[]segment中
Pattern p = Pattern.compile(".");
String[]segment = p.split(ip);
则segment就是{A,B,C,D}啦,再按照你所要求的规则去判断。
比如你要求的IP必须是这个网段192.168.0.*,那么就判断 A==192, B==168, C==0, -1<D<256 方法是土了点,呵呵,希望有用~
String[] parts = ipaddr.split("[.]");
if (parts.length != 4) {
System.out.println("---- length of parts is " + parts.length);
return false;
} for (int i = 0; i < parts.length; i++) {
int ipart = -1;
try {
ipart = Integer.parseInt(parts[i]);
} catch (NumberFormatException e) {
System.out.println("---- illegal number " + parts[i]);
return false;
}
if (ipart <= 0 || ipart > 255) {
System.out.println("---- out of range " + parts[i]);
return false;
}
}
return true;
}
能不能给我一段完全判断的,包括字符、长度、大小的判断。
100-199: 1\d\d
200-249: 2[0-4]\d
250-255: 25[0-5]于是:0-255:(?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5]于是:0.0.0.0 - 255.255.255.255 就是:
\b((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])\.((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])\.((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])\.((?!\d\d\d)\d+|1\d\d|2[0-4]\d|25[0-5])\b
http://www.regexlab.com/zh/regref.htm给你一个测试工具,可以进行测试:
http://www.regexlab.com/zh/workshop.asp?pat=%5Cb%28%28%3F%21%5Cd%5Cd%5Cd%29%5Cd%2B%7C1%5Cd%5Cd%7C2%5B0%2D4%5D%5Cd%7C25%5B0%2D5%5D%29%5C%2E%28%28%3F%21%5Cd%5Cd%5Cd%29%5Cd%2B%7C1%5Cd%5Cd%7C2%5B0%2D4%5D%5Cd%7C25%5B0%2D5%5D%29%5C%2E%28%28%3F%21%5Cd%5Cd%5Cd%29%5Cd%2B%7C1%5Cd%5Cd%7C2%5B0%2D4%5D%5Cd%7C25%5B0%2D5%5D%29%5C%2E%28%28%3F%21%5Cd%5Cd%5Cd%29%5Cd%2B%7C1%5Cd%5Cd%7C2%5B0%2D4%5D%5Cd%7C25%5B0%2D5%5D%29%5Cb&txt=192%2E168%2E0%2E6%2C+192%2E256%2E0%2E6%2C+192%2E168%2E0%2E255
boolean b = m.matches(); // ==> true m = p.matcher("192.256.0.6");
b = m.matches(); // ==> false
表达式中有一段报错。
不过我把机枪兵给的程序改了一下,可以使用了。谢谢两位。
boolean b = m.matches(); // ==> true
System.out.println(b);m = p.matcher("192.256.0.6");
b = m.matches(); // ==> falseSystem.out.println(b);