微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

正则表达式判断ip

时间:2014-04-14 11:35  浏览:努力统计中...
为何下面的不能正确判断ip地址格式是否正确 StringchekString= [1-255]\\.[0-255]\\.[0-255]\\.[0-255]$ ; Stringip= 192.168.1.1 ; if(ip.matches(chekString)) { System.out.println( 是一个正确的ip ); } else { System.out.print
为何下面的不能正确判断ip地址格式是否正确
		
                String chekString="[1-255]\\.[0-255]\\.[0-255]\\.[0-255]$";
String ip="192.168.1.1";
if (ip.matches(chekString))
{
System.out.println("是一个正确的ip");

}
else
{
System.out.println("不是一个正确的ip");
}

运行结果是:不是一个正确的ip

楼主这个正则的意思是"1-2或者5中的一个数字后面跟.接着0-2或5中的一个数字后面跟.接着0-2或5中的一个数字后面跟.最后0-2或5中的一个数字"


为嘛是1-2或者5中的一个数字,不是1-255中的一个数字?


为嘛是1-2或者5中的一个数字,不是1-255中的一个数字?
正则中"[]"里面代表的都只有一个字符。这些说明看JDK API中java.util.regex.Pattern的说明楼主就清楚了

[]:匹配一个中括号内的字符;
[0-9]  [a-z]  [a-zA-Z]


正则表达式中是按照字符去单个匹配的,匹配内容都会看作是单个字符.[1-255]这种写法会被认为是,1到2的所有数字表示的字符,以及为5的字符都会被配匹.所以
[1-255]\\.[0-255]\\.[0-255]\\.[0-255]$这个表达式能匹配的是
125.0125.0125.0125(每个点隔开的数字中有且只能有一个).如 1.0.1.2 这样的格式.
楼主可以参考这个表达式
([1-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-5]) 匹配(1-255)
把第一个1改成0就可以匹配 0-255 了.


刚开始以为字符可以使用数字表示,我在这测试了几遍数字一旦超过9不行了谢谢了,大侠请接分
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线------